<SEC-DOCUMENT>0001437749-20-003547.txt : 20200226
<SEC-HEADER>0001437749-20-003547.hdr.sgml : 20200226
<ACCEPTANCE-DATETIME>20200226111829
ACCESSION NUMBER:		0001437749-20-003547
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		105
CONFORMED PERIOD OF REPORT:	20191231
FILED AS OF DATE:		20200226
DATE AS OF CHANGE:		20200226

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			Proto Labs Inc
		CENTRAL INDEX KEY:			0001443669
		STANDARD INDUSTRIAL CLASSIFICATION:	FABRICATED STRUCTURAL METAL PRODUCTS [3440]
		IRS NUMBER:				000000000
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		10-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-35435
		FILM NUMBER:		20653768

	BUSINESS ADDRESS:	
		STREET 1:		5540 Pioneer Creek
		CITY:			Maple Plain
		STATE:			MN
		ZIP:			55359
		BUSINESS PHONE:		763-479-7474

	MAIL ADDRESS:	
		STREET 1:		5540 Pioneer Creek
		CITY:			Maple Plain
		STATE:			MN
		ZIP:			55359
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-K
<SEQUENCE>1
<FILENAME>prlb20191231_10k.htm
<DESCRIPTION>FORM 10-K
<TEXT>
<XBRL>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:naics="http://xbrl.sec.gov/naics/2011-01-31" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2015-02-26" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:us-types="http://fasb.org/us-types/2017-01-31" xmlns:utreg="http://www.xbrl.org/2009/utr" xmlns:invest="http://xbrl.sec.gov/invest/2013-01-31" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:us-roles="http://fasb.org/us-roles/2017-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thunderdome="http://www.RDGFilings.com" xmlns:utr="http://www.xbrl.org/2009/utr" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:prlb="http://www.protolabs.com/20191231" xmlns:us-gaap="http://fasb.org/us-gaap/2019-01-31" xmlns:country="http://xbrl.sec.gov/country/2017-01-31" xmlns:rr="http://xbrl.sec.gov/rr/2018-01-31" xmlns:sic="http://xbrl.sec.gov/sic/2011-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2017-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2018-01-31" xmlns:srt="http://fasb.org/srt/2019-01-31">
 <head>
  <title>prlb20191231_10k.htm</title>
  <!-- Generated by ThunderDome Portal - 2/25/2020 3:54:26 PM -->
  <meta http-equiv="Content-Type" content="text/html" /></head>
 <body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; cursor: auto;"><div style="display: none;"><ix:header><ix:hidden>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:EntityCentralIndexKey" id="thunderdome-EntityCentralIndexKey">0001443669</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:EntityRegistrantName" id="thunderdome-EntityRegistrantName">Proto Labs Inc</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:AmendmentFlag" format="ixt:booleanfalse">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:CurrentFiscalYearEndDate">--12-31</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:DocumentFiscalPeriodFocus">FY</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="dei:DocumentFiscalYearFocus">2019</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002302" format="ixt-sec:duryear">2</ix:nonNumeric>
<ix:nonFraction id="c56002377" contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:OperatingLeaseLiability" scale="6">13.1</ix:nonFraction>
<ix:nonFraction id="c56002853" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LineOfCredit" scale="0">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" name="prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" id="c56002857" format="ixt-sec:durmonth">3</ix:nonNumeric>
<ix:nonFraction id="c56002864" contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">0.3</ix:nonFraction>
<ix:nonFraction id="c56002866" contextRef="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">0.3</ix:nonFraction>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" name="prlb:EmployeeStockPurchasePlanOfferingPeriod" id="c56002891" format="ixt-sec:durmonth">6</ix:nonNumeric>
<ix:nonFraction id="c56002904" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c56002919" format="ixt-sec:duryear">4</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c56002920" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c56002949" format="ixt-sec:duryear">4</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c56002950" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonFraction id="c56002958" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" scale="-2">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c56002960" format="ixt-sec:duryear">3</ix:nonNumeric>
<ix:nonFraction id="c56003298" contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:OperatingLeaseLiability" scale="6">13.1</ix:nonFraction>
<ix:nonNumeric contextRef="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:LesseeOperatingLeaseTermOfContract" id="c56003286" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:OperatingLossCarryforwardsExpirationPeriod" id="c56003403" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonFraction id="c56001824" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3">952</ix:nonFraction>
<ix:nonFraction id="c56001825" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3">919</ix:nonFraction>
<ix:nonFraction id="c56001873" contextRef="i_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0">0.001</ix:nonFraction>
<ix:nonFraction id="c56001874" contextRef="i_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0">0.001</ix:nonFraction>
<ix:nonFraction id="c56001875" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="0">10,000,000</ix:nonFraction>
<ix:nonFraction id="c56001876" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="0">10,000,000</ix:nonFraction>
<ix:nonFraction id="c56001877" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PreferredStockSharesIssued" scale="0">0</ix:nonFraction>
<ix:nonFraction id="c56001878" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PreferredStockSharesIssued" scale="0">0</ix:nonFraction>
<ix:nonFraction id="c56001879" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PreferredStockSharesOutstanding" scale="0">0</ix:nonFraction>
<ix:nonFraction id="c56001880" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PreferredStockSharesOutstanding" scale="0">0</ix:nonFraction>
<ix:nonFraction id="c56001883" contextRef="i_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0">0.001</ix:nonFraction>
<ix:nonFraction id="c56001884" contextRef="i_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0">0.001</ix:nonFraction>
<ix:nonFraction id="c56001885" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" scale="0">150,000,000</ix:nonFraction>
<ix:nonFraction id="c56001886" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" scale="0">150,000,000</ix:nonFraction>
<ix:nonFraction id="c56001887" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesIssued" scale="0">26,786,459</ix:nonFraction>
<ix:nonFraction id="c56001888" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesIssued" scale="0"> 26,984,747 </ix:nonFraction>
<ix:nonFraction id="c56001889" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0">26,786,459</ix:nonFraction>
<ix:nonFraction id="c56001890" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0"> 26,984,747 </ix:nonFraction></ix:hidden>
<ix:references>
<link:schemaRef xlink:href="prlb-20191231.xsd" xlink:type="simple"></link:schemaRef></ix:references>
<ix:resources>
<xbrli:context id="d_2019-01-01_2019-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="USD"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2019-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2019-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Share"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2020-02-14"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-02-14</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="NonApplicable"><xbrli:measure>thunderdome:item</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2019-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="USDPerShare"><xbrli:divide><xbrli:unitNumerator><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unitNumerator><xbrli:unitDenominator><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unitDenominator></xbrli:divide></xbrli:unit>
<xbrli:context id="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Year"><xbrli:measure>utr:Y</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-11-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-01-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-01-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-11-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-11-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-11-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-11-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-11-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-11-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-11-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2016-01-01</xbrli:startDate><xbrli:endDate>2016-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_TitleOfIndividualAxis-EmployeesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">prlb:EmployeesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-11-30</xbrli:startDate><xbrli:endDate>2017-11-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Month"><xbrli:measure>utr:M</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Pure"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_AwardTypeAxis-ESPPMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-ESPPMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseArrangementTypeAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseArrangementTypeAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-10-01_2019-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-10-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context></ix:resources>
</ix:header></div>
  <div>
    &#xa0;
  </div>
  <div><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></p>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<p style="font-family: &quot;Times New Roman&quot;; font-size: 18pt; margin: 0pt 7.2pt; text-align: center;"><b>UNITED STATES</b></p>
<p style="font-family: &quot;Times New Roman&quot;; font-size: 18pt; margin: 0pt 7.2pt; text-align: center;"><b>SECURITIES AND EXCHANGE COMMISSION</b></p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;"><b>Washington, D.C. 20549</b></p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;"><b>________________</b></p>
<p style="font-size:3pt;margin:0pt 7.2pt;text-align:center;"><b>&#xa0;</b></p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 18pt;"><b>FORM <ix:nonNumeric name="dei:DocumentType" contextRef="d_2019-01-01_2019-12-31">10-K</ix:nonNumeric></b></p>
<p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(Mark One)</p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentAnnualReport" format="ixt-sec:boolballotbox" contextRef="d_2019-01-01_2019-12-31">&#x2611;</ix:nonNumeric></p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>For the fis</b><b>cal year ended <ix:nonNumeric name="dei:DocumentPeriodEndDate" format="ixt:datemonthdayyearen" contextRef="d_2019-01-01_2019-12-31">December 31, 2019</ix:nonNumeric></b></p> </td>
  </tr>
 </tbody>
</table>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;"><b>or</b></p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" contextRef="d_2019-01-01_2019-12-31">&#x2610;</ix:nonNumeric></p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:92%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>For the transition period from</b><span style="text-decoration: underline; "><b>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</b></span><b> to</b><span style="text-decoration: underline; "><b>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</b></span></p> </td>
  </tr>
 </tbody>
</table>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;"><b>&#xa0;</b></p>
<p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Commission File Number: <ix:nonNumeric name="dei:EntityFileNumber" contextRef="d_2019-01-01_2019-12-31">001-35435</ix:nonNumeric></b></p>
<p style="font-size: 3pt; margin: 0pt; text-align: center;">&#xa0;</p>
<p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt; text-align: center; font-size: 24pt;"><b>Proto Labs, Inc.</b></p>
<p style="margin: 0pt; text-align: center; font-size: 10pt;">(Exact name of Registrant as specified in its charter)</p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" contextRef="d_2019-01-01_2019-12-31">Minnesota</ix:nonNumeric></b></p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="d_2019-01-01_2019-12-31">41-1939628</ix:nonNumeric></b></p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(State or other jurisdiction of</p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(I.R.S. Employer</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">incorporation or organization)</p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">Identification No.)</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="d_2019-01-01_2019-12-31">5540 Pioneer Creek Drive</ix:nonNumeric></b></p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="d_2019-01-01_2019-12-31">Maple Plain</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" contextRef="d_2019-01-01_2019-12-31">Minnesota</ix:nonNumeric></b></p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="d_2019-01-01_2019-12-31">55359</ix:nonNumeric></b></p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(Address of principal executive offices)</p> </td>
   <td style="vertical-align:top;width:50%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(Zip Code)</p> </td>
  </tr>
 </tbody>
</table>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;"><b>&#xa0;</b></p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;"><b>(<ix:nonNumeric name="dei:CityAreaCode" contextRef="d_2019-01-01_2019-12-31">763</ix:nonNumeric>)&#xa0;<ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="d_2019-01-01_2019-12-31">479-3680</ix:nonNumeric></b></p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">(Registrant&#x2019;s telephone number, including area code)</p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">Securities registered pursuant to Section&#xa0;12(b)&#xa0;of the Act:</p>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<table style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;" cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr>
   <td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Title of each class</p> </td>
   <td style="vertical-align: top; width: 30%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Trading Symbol(s)</p> </td>
   <td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Name of each exchange on which registered</p> </td>
  </tr>
  <tr>
   <td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:Security12bTitle" contextRef="d_2019-01-01_2019-12-31">Common Stock, Par Value $0.001 Per Share</ix:nonNumeric></p> </td>
   <td style="vertical-align: top; width: 30%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:TradingSymbol" contextRef="d_2019-01-01_2019-12-31">PRLB</ix:nonNumeric></p> </td>
   <td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" contextRef="d_2019-01-01_2019-12-31">New York Stock Exchange</ix:nonNumeric></p> </td>
  </tr>
 </tbody>
</table>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">Securities registered pursuant to Section 12(g)&#xa0;of the Act: <b>None</b></p>
<p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">____________________________________________</p>
<p style="font-size: 3pt; margin: 0pt 0pt 0pt 18pt; text-align: center;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark if the Registrant is a well-known seasoned issuer, as defined in Rule&#xa0;405 of the Securities Act.&#xa0; <ix:nonNumeric name="dei:EntityWellKnownSeasonedIssuer" contextRef="d_2019-01-01_2019-12-31">Yes</ix:nonNumeric>&#xa0;&#x2612;&#xa0;&#xa0;No<b>&#xa0;</b>&#x2610;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark if the Registrant is not required to file reports pursuant to Section&#xa0;13 or Section&#xa0;15(d)&#xa0;of the Act.&#xa0; Yes&#xa0;&#x2610;&#xa0;&#xa0;<ix:nonNumeric name="dei:EntityVoluntaryFilers" contextRef="d_2019-01-01_2019-12-31">No</ix:nonNumeric>&#xa0;&#x2612;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark whether the Registrant (1)&#xa0;has filed all reports required to be filed by Section&#xa0;13 or 15(d)&#xa0;of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the Registrant was required to file such reports), and (2)&#xa0;has been subject to such filing requirements for the past 90 days.&#xa0; <ix:nonNumeric name="dei:EntityCurrentReportingStatus" contextRef="d_2019-01-01_2019-12-31">Yes</ix:nonNumeric>&#xa0;&#x2612;&#xa0;&#xa0;No&#xa0;&#x2610;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark whether the Registrant has submitted electronically every Interactive Data File required to be submitted&#xa0;pursuant to Rule&#xa0;405 of Regulation S-T during the preceding 12 months (or for such shorter period that the Registrant was required to submit such files).&#xa0; <ix:nonNumeric name="dei:EntityInteractiveDataCurrent" contextRef="d_2019-01-01_2019-12-31">Yes</ix:nonNumeric>&#xa0;&#xa0;&#x2612;&#xa0;&#xa0;No&#xa0;&#xa0;&#x2610;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="text-align: center; width: 100%">
  &#xa0;
 </div>
 <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
 <div class="PGHDR" style="text-align: left; width: 100%">
  <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
 </div>
</div>
<p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, smaller reporting company, or an emerging growth company. See the definitions of &#x201c;large accelerated filer,&#x201d; &#x201c;accelerated filer,&#x201d; &#x201c;smaller reporting company,&#x201d; and &#x201c;emerging growth company&#x201d; in Rule 12b-2 of the Exchange Act.</p>
<p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0">
 <tbody>
  <tr>
   <td style="vertical-align:top;width:44.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><ix:nonNumeric name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" contextRef="d_2019-01-01_2019-12-31">Large accelerated filer</ix:nonNumeric>&#xa0;&#x2612;</p> </td>
   <td style="vertical-align:top;width:55.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">Accelerated filer&#xa0;&#x2610;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:44.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:55.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:44.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">Non-accelerated filer&#xa0;&#x2610;</p> </td>
   <td style="vertical-align:top;width:55.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">Smaller reporting company&#xa0;<ix:nonNumeric name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" contextRef="d_2019-01-01_2019-12-31">&#x2610;</ix:nonNumeric></p> </td>
  </tr>
  <tr>
   <td style="vertical-align:top;width:44.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">&#xa0;</p> </td>
   <td style="vertical-align:top;width:55.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">Emerging growth company&#xa0;<ix:nonNumeric name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" contextRef="d_2019-01-01_2019-12-31">&#x2610;</ix:nonNumeric></p> </td>
  </tr>
 </tbody>
</table>
<p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act.&#xa0;&#xa0;&#x2610;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">Indicate by check mark whether the Registrant is a shell company (as defined in Rule&#xa0;12b-2 of the Act).&#xa0; Yes&#xa0;<ix:nonNumeric name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" contextRef="d_2019-01-01_2019-12-31">&#x2610;</ix:nonNumeric>&#xa0;&#xa0;No&#xa0;&#x2612;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">As of June 30, 2019 (the last business day of the Registrant&#x2019;s most recently completed second fiscal quarter), the aggregate market value of voting stock held by non-affiliates of the Registrant was approximately $<ix:nonFraction name="dei:EntityPublicFloat" scale="9" unitRef="USD" decimals="1" format="ixt:numdotdecimal" contextRef="i_2019-06-30">3.1</ix:nonFraction>&#xa0;billion.</p>
<p style="margin: 0pt 0pt 0pt 18pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt; text-align: left; font-size: 10pt;">As of February 14, 2020, there were <ix:nonFraction name="dei:EntityCommonStockSharesOutstanding" scale="0" unitRef="Share" decimals="INF" format="ixt:numdotdecimal" contextRef="i_2020-02-14">26,787,910</ix:nonFraction> shares of the Registrant&#x2019;s common stock outstanding.</p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;"><b>DOCUMENTS INCORPORATED BY REFERENCE</b></p>
<p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt; text-align: left; font-size: 10pt;">Portions of the Registrant&#x2019;s Proxy Statement for its 2020 Annual Meeting of Shareholders are incorporated by reference to Part III of this Annual Report on Form 10-K.</p>
<p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
  2
 </div>
 <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
 <div class="PGHDR" style="text-align: left; width: 100%">
  <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
 </div>
</div>
<p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p></div>
  <div>
    &#xa0;
  </div>
  <div>
   <p style="margin: 0pt 14.7pt; text-align: center; font-size: 10pt;"><b><a id="toc" title="toc" href="#"></a>Table of Contents</b></p>
   <p style="margin: 0pt 14.7pt; text-align: center; font-size: 10pt;">&#xa0;<b>&#xa0;</b></p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
    <tbody>
     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><span style="text-decoration: underline; "><b>Page</b></span></p> </td>
     </tr>
     <tr>
      <td colspan="5" style="vertical-align:top;width:100%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><a href="#part1" style="-sec-extract:exhibit;"><span style="text-decoration: underline; "><b>PART I</b></span></a></p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 1.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item1_business" style="-sec-extract:exhibit;">Business</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">5</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 1A.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item1a_riskfactors" style="-sec-extract:exhibit;">Risk Factors</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">13</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 1B.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item1b_unresolvedstaffcomments" style="-sec-extract:exhibit;">Unresolved Staff Comments</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">26</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 2.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item2_properties" style="-sec-extract:exhibit;">Properties</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">26</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 3.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item3_legalproceedings" style="-sec-extract:exhibit;">Legal Proceedings</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">27</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 4.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item4_minesafetydis" style="-sec-extract:exhibit;">Mine Safety Disclosures</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">27</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>
     <tr>
      <td colspan="5" style="vertical-align:top;width:100%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><a href="#part2" style="-sec-extract:exhibit;"><span style="text-decoration: underline; "><b>PART II</b></span></a></p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 5.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item5_marketforrestrantscommonequity" style="-sec-extract:exhibit;">Market for Registrant's Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">28</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 6.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item6_selectedfinancialdata" style="-sec-extract:exhibit;">Selected Financial Data</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">30</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 7.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item7_mdaa" style="-sec-extract:exhibit;">Management's Discussion and Analysis of Financial Condition and Results of Operations</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">32</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 7A.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item7a_quantitativeandqualatativedis" style="-sec-extract:exhibit;">Quantitative and Qualitative Disclosures About Market Risk</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">46</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 8.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item8_financialstatementsandsup" style="-sec-extract:exhibit;">Financial Statements and Supplementary Data</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">47</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 9.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item9_changesinanddisagreements" style="-sec-extract:exhibit;">Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">80</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 9A.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item9a_controlsandprocedures" style="-sec-extract:exhibit;">Controls and Procedures</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">80</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 9B.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item9b_otherinfo" style="-sec-extract:exhibit;">Other Information</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">80</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>
     <tr>
      <td colspan="5" style="vertical-align:top;width:100%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><a href="#part3" style="-sec-extract:exhibit;"><span style="text-decoration: underline; "><b>PART III</b></span></a></p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 10.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item10_directorsexecofficers" style="-sec-extract:exhibit;">Directors, Executive Officers and Corporate Governance</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">81</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 11.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item11_executivecompensation" style="-sec-extract:exhibit;">Executive Compensation</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">81</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 12.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item12_securityownership" style="-sec-extract:exhibit;">Security Ownership of Certain Beneficial Owners and Management</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">81</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 13.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item13_certianrelationships" style="-sec-extract:exhibit;">Certain Relationships and Related Transactions, and Director Independence</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">81</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 14.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item14_principalaccoutantfees" style="-sec-extract:exhibit;">Principal Accountant Fees and Services</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">81</p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>
     <tr>
      <td colspan="5" style="vertical-align:top;width:100%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><a href="#part4" style="-sec-extract:exhibit;"><span style="text-decoration: underline; "><b>PART IV</b></span></a></p> </td>
     </tr>
     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Item 15.</p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#item15_exhibitsandfinancialstatementsch" style="-sec-extract:exhibit;">Exhibits and Financial Statement Schedules</a></p> </td>
      <td style="vertical-align:top;width:2%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">82</p> </td>
     </tr>
    </tbody>
   </table>
   <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
      3
    </div>
    <hr />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  </div>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;"><b>Special Note Regarding Forward Looking Statements</b></p>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">Statements contained in this Annual Report on Form 10-K regarding matters that are not historical or current facts are &#x201c;forward-looking statements&#x201d; within the meaning of The Private Securities Litigation Reform Act of 1995. In some cases, you can identify forward-looking statements by the following words: &#x201c;may,&#x201d; &#x201c;will,&#x201d; &#x201c;could,&#x201d; &#x201c;would,&#x201d; &#x201c;should,&#x201d; &#x201c;expect,&#x201d; &#x201c;intend,&#x201d; &#x201c;plan,&#x201d; &#x201c;anticipate,&#x201d; &#x201c;believe,&#x201d; &#x201c;estimate,&#x201d; &#x201c;predict,&#x201d; &#x201c;project,&#x201d; &#x201c;potential,&#x201d; &#x201c;continue,&#x201d; &#x201c;ongoing&#x201d; or the negative of these terms or other comparable terminology, although not all forward-looking statements contain these words. These statements involve known and unknown risks, uncertainties and other factors which may cause our results to be materially different than those expressed or implied in such statements. In particular, some of the risks associated with our business include:</p>
  <p style="margin: 0pt 22.2pt 0pt 23.3pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the level of competition in our industry and our ability to compete;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to respond to changes in our industry;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to effectively grow our business and manage our growth;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to continue to sell to existing and new customers;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to meet product developers&#x2019; and engineers&#x2019;&#xa0;needs and expectations regarding quick turnaround time, price and specifications for quality;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the adoption rate of e-commerce and 3D CAD software by product developers and engineers;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to process a large volume of designs and identify significant opportunities in our business;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to maintain and enhance our brand;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to successfully identify, complete and integrate acquisitions or other strategic transactions;</p> </td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#x2022;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">our ability to complete and successfully launch updates to our systems;</td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the loss of key personnel or failure to attract and retain additional personnel;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">system interruptions at our operating facilities;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">possible unauthorized access to customers&#x2019; confidential information stored in our systems; and</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to protect our intellectual property and not infringe on others&#x2019; intellectual property.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt 0pt 23.3pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">Certain of these factors and others are described in the discussion on risk factors that appear in Part I, Item 1A. &#x201c;Risk Factors&#x201d; of this Annual Report on Form 10-K and uncertainties are detailed in this and other reports and filings with the Securities and Exchange Commission (SEC). Other unknown or unpredictable factors also could have material adverse effects on our future results. We cannot guarantee future results, levels of activity, performance or achievements. Accordingly, you should not place undue reliance on these forward-looking statements. Finally, we expressly disclaim any intent or obligation to update any forward-looking statements to reflect subsequent events or circumstances.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     4
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;"><b><a id="part1" title="part1" href="#"></a>PART I</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt 7.2pt 0pt 16.2pt; text-align: left; font-size: 10pt;"><b><a id="item1_business" title="item1_business" href="#"></a>Item&#xa0;1. Business</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;"><b>Overview</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Proto Labs, Inc. was incorporated in Minnesota in 1999. The terms &#x201c;Proto Labs,&#x201d; the &#x201c;Company,&#x201d; &#x201c;we,&#x201d; &#x201c;us,&#x201d; and &#x201c;our&#x201d; as used herein refer to the business and operations of Proto Labs, Inc. and its subsidiaries. We are the world&#x2019;s largest and fastest digital manufacturer&#xa0;of custom prototypes and on-demand production parts. Our mission is to help companies accelerate product development, reduce risk, and optimize supply chains by providing quality prototyping and on-demand manufacturing services at unprecedented speeds. Our automated quoting and manufacturing systems allow us to produce commercial-grade plastic, metal, and liquid silicone rubber parts within days. We manufacture prototype and low volume production parts for companies worldwide, who are under increasing pressure to bring their finished products to market faster than their competition. We utilize injection molding, computer numerical control (CNC) machining, 3D printing and sheet metal fabrication to manufacture custom parts for our customers. Our proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts. Our customers conduct nearly all of their business with us over the Internet. We target our products to the millions of product developers and engineers who use three-dimensional computer-aided design (3D CAD) software to design products across a diverse range of end-markets. We have established our operations in the United States, Europe and Japan, which we believe are three of the largest geographic markets where these product developers and engineers are located. We believe our use of advanced technology enables us to offer significant advantages at competitive prices to many customers and is the primary reason we have become a leading supplier of custom parts.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe prototype and low volume custom parts manufacturing has historically been an underserved market due to the inefficiencies inherent in the quotation, equipment set-up and non-recurring engineering processes required to produce custom parts. Our customers typically order short run custom parts for a variety of reasons, including:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">they need a prototype to confirm the form, fit and function of one or more components of a product under development;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">they need an initial supply of parts to support pilot production for testing of a product;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">they need an initial supply of parts to support production while their high-volume production mold is being prepared;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">they need to meet their customers' variable demand for custom parts in a competitive timeframe;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">their product will only be released in a limited quantity; or</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">they need to support end-of-life production in a cost-effective manner.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In each of these instances, we believe our solution provides product developers, engineers, and supply chains with an exceptional combination of speed, quality, competitive pricing, ease of use and reliability that they typically cannot find among conventional custom parts manufacturers. Our technology enables us to ship parts as soon as the same day after receipt of a customer&#x2019;s design submission.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal. We continually seek to expand the range of size and geometric complexity of the parts we can make with these processes, to extend the variety of materials we are able to support and to identify additional manufacturing processes to which we can apply our technology in order to better serve the evolving preferences and needs of product developers and engineers.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have experienced significant growth since our inception in 1999. We have grown our total revenue from $264.1 million in 2015 to $458.7&#xa0;million in 2019. We have grown our net income from $46.5 million in 2015 to $63.7&#xa0;million in 2019.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our increases in revenue and income from operations can be attributed to expanding our customer base, broadening our parts envelope, and launching new manufacturing technologies. We were founded in 1999 with plastic injection molding, and have expanded our product lines over the years by the introduction of:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">CNC machining in 2007;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">liquid silicon rubber (LSR) and lathe manufacturing processes that expanded the breadth and scope of our injection molding and CNC machining product lines in 2014;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">3D printing, including stereolithography (SL), selective laser sintering (SLS), and direct metal laser sintering (DMLS), through our acquisition of FineLine Prototyping, Inc. (FineLine) in 2014 and expanded through our acquisition of certain assets of Alphaform AG (Alphaform) in 2015;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">rapid overmolding technology in 2016 and insert molding technology in 2017, both of which expanded the breadth of our manufacturing capabilities in our Injection Molding product line;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">PolyJet and Multi Jet Fusion (MJF)&#xa0;in 2017, which expanded the processes&#xa0;with which we produce 3D printed parts;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     5
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">injection molding commercial offerings tailored to on-demand manufacturing customers in 2017;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">sheet metal fabrication capability through our acquisition of RAPID Manufacturing Group, LLC (RAPID) in 2017;&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">expanded CNC machining capabilities for larger and more complex parts through our acquisition of RAPID in 2017;</p> </td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">Carbon Digital Light Synthesis<sup style="vertical-align:top;line-height:120%;font-size:pt">(TM)</sup> (DLS) in 2019, which further expanded the processes with which we produce 3D printed parts; and</td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">during 2018 and 2019, we have been working on enhancements to our e-commerce customer interface and back-end operations software. These enhancements are expected to launch in 2020 and are designed to add value for our customers and support the growth of the business in the future.</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;"><b>Industry Overview</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our Industry</b></i></p>
  <p style="margin: 0pt 22.2pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We serve product developers and engineers worldwide who bring new ideas to market in the form of products containing one or more custom parts. Many of these product developers and engineers use 3D CAD software to create digital models representing their custom part designs that are then used to create physical parts for concept modeling, prototyping, functional testing, market evaluation or production. Custom prototype parts play a critical role in the product development process, as they provide product developers and engineers with the ability to test and confirm their intended performance requirements and explore design alternatives.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Early in the product development process, 3D printing processes such as SL and PolyJet can be used to quickly produce an approximate physical representation of a part, but these representations may not meet product developers&#x2019; and engineers&#x2019; requirements for material properties. As an alternative, injection molding, CNC machining, sheet metal, and 3D printing processes such as SLS, DMLS, and MJF can be used to produce low volumes of high-quality custom parts in either metal or plastic. For follow-on functional testing, market evaluation and production runs, parts are typically manufactured using injection molding, CNC machining&#xa0;and sheet metal fabrication.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our Solution</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have developed proprietary software and advanced manufacturing processes that automate much of the skilled labor conventionally required in quoting, production engineering and manufacturing of custom parts. We believe our interactive web-based interface and highly automated processes address the desires of many product developers and engineers for a fast, efficient and cost-effective means to obtain custom parts, and are the primary reasons we have become a leading supplier of custom parts.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">Key elements of our solution include:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i>Sophisticated Technology that Reduces Turnaround Time and Provides Consistency in Lead Time</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our digital model is centered on our web-based interface and proprietary software, which automate many of the manual and time-consuming processes typically required to obtain custom parts from conventional suppliers. Our platform automates many aspects of the entire process from design submission through manufacturability analysis and feedback, quotation, order submission, mold design, tool path generation, mold or part manufacture and digital inspection. To utilize our platform, a prospective customer uploads a 3D CAD file of their required part through our website. Often within minutes of design submission, our software analyzes the design, assesses the manufacturability of the design and our ability to make the part, and returns a firm price quotation with any recommendations for design modifications. Many of our customers find this analysis particularly helpful, as it diagnoses and prevents potential problems prior to manufacturing. We can also provide a flow analysis to identify design flaws that limit the ability to manufacture a quality part.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 54pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our quoting system is highly interactive, enabling our prospective customers to change the material, finish, quantity or shipping schedule of orders, and to instantly receive an updated quotation. Once an order is received, our software automates much of the manual engineering and skilled labor that is normally required to manufacture parts. As a result, in many cases we are able to quote orders in minutes and ship parts as soon as the same day ordered.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i>Scale to Process Large Numbers of Unique Part Designs</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our proprietary, highly scalable quoting technology addresses the manual processes conventionally involved in submitting a design, analyzing its manufacturability, making design revision recommendations and generating price quotations. This enables us to quickly analyze high volumes of 3D CAD part design submissions and provide feedback to our prospective product developer and engineer customers. In 2019 alone, we generated quotations for over 1,000,000&#xa0;design submissions. Our proprietary manufacturing automation technology is also highly scalable, enabling us to process large numbers of unique designs and, combined with our manufacturing processes, efficiently and effectively manufacture high volumes of parts to meet the needs of product developers and engineers.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     6
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i>Enhanced Customer Experience</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our web-based customer interface provides a straightforward means of submitting 3D CAD part designs. Our proprietary manufacturability analysis then quickly analyzes whether a part design falls within our manufacturing capabilities. In many cases, our software provides suggested design modifications to enhance manufacturability, which is presented to the product developer or engineer in an interactive quotation containing a color-coded 3D representation of the part. This allows product developers and engineers to quickly determine the manufacturability of their parts, understand the cost and when they can be shipped. Our interactive quotations provide instant visibility into the impact of changing an order&#x2019;s various parameters such as material, finish, quantity or shipping schedule. As a result, we provide product developers and engineers with an easy-to-use and consistent means to obtain custom parts.</p>
  <p style="margin: 0pt 14.7pt; text-align: center; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i>Attractive Custom Pricing</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Based on internal market research, we believe we generally have competitive pricing on custom orders. We believe this, combined with speed,&#xa0;is a direct result of our technology and the efficiency of our operations, both of which were designed specifically for lower volume runs of custom parts production. By limiting these costs, we can typically offer attractive pricing not normally possible in the low volume, high mix custom parts market, and as a result, we can typically offer product developers and engineers competitive prices on custom manufactured parts.&#xa0;</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our Product Lines</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our Injection Molding, CNC Machining, 3D Printing and Sheet Metal product lines offer many product developers and engineers the ability to quickly and efficiently outsource their quick-turn custom parts manufacturing. See Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations&#x201d; for the historical revenue generated by each of Injection Molding, CNC Machining, 3D Printing and Sheet Metal.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Injection Molding</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our Injection Molding product line uses our 3D CAD-to-CNC machining technology for the automated design and manufacture of molds, which are then used to produce custom plastic and&#xa0;liquid silicone rubber injection-molded parts and&#xa0;over-molded and&#xa0;insert-molded&#xa0;injection-molded parts on commercially available equipment. Our Injection Molding product line works best for on-demand production, bridge tooling, pilot runs and functional prototyping. Our affordable aluminum molds and quick turnaround times help reduce design risk and limit overall production costs for product developers and engineers. Prototype quantities typically range from 25 to 100 parts. Because we retain possession of the molds, customers who need short-run production often come back to Proto Labs&#x2019; Injection Molding product line for additional quantities. They do so to support pilot production for product testing, while their tooling for high-volume production is being prepared, because they need on-demand manufacturing due to disruptions in their manufacturing process, because their product requires limited annual quantity or because they need end-of-life production support. In 2017, we launched an on-demand manufacturing injection molding service. This service utilizes our existing processes, but is designed to fulfill the needs of customers with on-going production needs, typically in annual volumes of less than 10,000 parts.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>CNC Machining</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our CNC Machining product line uses commercially available CNC machines to offer milling and turning. CNC milling is a manufacturing process that cuts plastic and metal blocks into one or more custom parts based on the 3D CAD model uploaded by the product developer or engineer. CNC turning with live tooling combines both lathe and mill capabilities to machine parts with cylindrical features from metal rod stock. Our efficiencies derive from the automation of the programming of these machines and a proprietary fixturing process. Quick-turn CNC machining works best for prototyping, form and fit testing, jigs and fixtures and functional components for end-use applications. We offer competitive pricing at higher quantities, in addition to First Article Inspection (FAI) reporting, material certifications and additional in-house and outsourced finishing options, like anodizing and chromate plating. The CNC Machining product line is well suited to produce small quantities, typically in the range of 15 to&#xa0;1,000 parts.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>3D Printing</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our 3D Printing product line includes SL, SLS, DMLS, MJF, PolyJet and Carbon DLS processes, which offers customers a wide-variety of high-quality, precision rapid prototyping and low volume production. These processes create parts with a high level of accuracy, detail, strength and durability. Industrial 3D Printing is best suited for functional prototypes, complex designs and end-use applications. 3D Printing is well suited to produce small quantities, typically in the range of one to several hundred parts.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     7
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Sheet Metal</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our Sheet Metal product line includes quick-turn and e-commerce-enabled custom sheet metal parts, providing customers with prototype and low-volume production parts. The rapid prototype sheet metal process is most often used when form, fit and function are all a priority. Our manufacturing process uses customer 3D CAD models uploaded by the product developer or engineer to fabricate rapid prototyping sheet metal or end-use production parts and assemblies. The Sheet Metal product line is well suited to produce quantities in the range of one to 500 parts.</p>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our Process</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div style="text-align: center;">
   <img alt="" src="image02.jpg" />
  </div>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: justify; text-indent: 27pt; font-size: 10pt;">The process for Injection Molding begins when the product developer or engineer uploads one or more 3D CAD models representing the desired part geometry through our website. Our proprietary software uses complex algorithms to analyze the 3D CAD geometry, analyze its manufacturability and support the creation of an interactive, web-based quotation containing pricing and manufacturability information. A link to the quotation is then e-mailed to the product developer or engineer, who can access the quotation, change a variety of order parameters and instantly see the effect on price before finalizing the order. Our proprietary software supports the creation of the mold design and the tool paths required to manufacture the mold components, which are then routed to our CNC machining centers for execution. Once the mold is assembled, it is placed in one of our injection molding presses to create the required parts. Parts are shipped in as little as one business day from design submission. We ship our parts via small parcel common carriers on standard terms and conditions. Our other services have similar processes, but differ mainly due to the nature of the manufacturing processes on which each service is based.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     8
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt 25.2pt; text-align: left; font-size: 10pt;"><b>Our Growth Strategy</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The principal elements of our growth strategy are to:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Expand the Customer Base</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We plan to expand our customer base to serve more product developers and engineers within the companies that have already used our product lines. Individual product developers and engineers typically make or influence the choice of vendor when sourcing custom parts. We believe a significant opportunity exists for us to leverage highly satisfied product developers and engineers to encourage others within the same organization to utilize our product lines. We have historically gained a significant number of new customers through word-of-mouth referrals from other product developers and engineers, and combine these referrals with the efforts of our marketing and sales force to identify and market our product lines to the colleagues of our existing customers.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We also plan to use our marketing and sales capabilities to continue to pursue product developers and engineers within companies who have not yet used our products. Our presence in geographic regions that have high populations of 3D CAD users provides us with a broad universe of potential new customer companies on which to focus our marketing and sales efforts.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe there may be opportunities to grow by identifying and expanding into select additional geographic markets. We currently operate in the United States, Europe and Japan, where we believe a substantial portion of the world&#x2019;s product developers and engineers are located. We entered the European market in 2005 and launched operations in Japan in 2009. For 2019, revenue earned in these markets represents approximately 22.0% of our total revenue. While we currently do not have specific plans to expand our manufacturing into any particular geographic markets, we believe opportunities exist to serve the needs of product developers and engineers in select new geographic regions and we will continue to evaluate such opportunities if and when they arise.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We plan to further enhance the functionality and ease of use of our platform and expand the capabilities of our customer-facing and back-end systems in order to further increase automation and meet the evolving needs of product developers and engineers worldwide. We believe product developers and engineers have come to expect advanced web-based tools and a fully integrated Internet platform from their vendors. We will continue to use the Internet to provide product developers and engineers with a standardized interface through which they can upload their 3D CAD models and obtain firm, interactive quotations quickly and efficiently.</p>
  <p style="margin: 0pt 22.2pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Launch New Manufacturing Technology</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We seek to identify additional manufacturing processes to which we can apply our digital technology and expertise to meet a greater range of product developers&#x2019; and engineers&#x2019; needs. Introducing new manufacturing processes can both attract new customers and provide us with a significant opportunity to cross-sell our existing product lines to our existing customer base. We regularly evaluate new manufacturing processes to offer product developers and engineers and introduce such new processes when we are confident that a sufficient market demand exists and that we can offer the same advantages our customers have come to expect from us.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We were founded with Injection Molding which represents 47.4% of our total revenue for the year ended December 31, 2019. Examples of new manufacturing services we have added include CNC Machining, 3D Printing and Sheet Metal. Our CNC Machining product line was first introduced in the United States and&#xa0;Europe in 2007, expanded to Japan in 2009,&#xa0;and further expanded in the United States through our acquisition of RAPID in November 2017. CNC Machining represents 33.9% of our total revenue for the year ended December 31, 2019. 3D printing technologies were introduced through our acquisition of FineLine in April 2014. We further expanded our 3D printing capabilities in October 2015 through our acquisition of Alphaform. Our 3D product line represents 13.4% of our total revenue for the year ended December 31, 2019. Our Sheet Metal product line was introduced through our acquisition of RAPID in November 2017 and represents 4.6% of total revenue for the year ended December 31, 2019.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We continue to expand our core product lines through product&#xa0;line extensions&#xa0;including liquid silicone rubber injection molding, lathe-turned parts, rapid overmolding, insert molding, PolyJet, MJF and Carbon DLS. We introduced liquid silicone rubber injection molding during 2014. In 2015, we introduced lathe-turned products to expand our CNC product line. In 2016, we expanded the breadth of our manufacturing capabilities by adding rapid overmolding technology. In 2017, we added insert molding to our Injection Molding product line and PolyJet and MJF to our 3D Printing product line. In addition, we launched on-demand manufacturing to address the needs of the low-volume, high-mix product segment. We also opened our first metrology lab in 2017 for enhanced inspection reporting on end-use production parts, including First Article Inspection Reports and digital inspection reports. In 2019, we added Carbon DLS to provide a cost-effective production solution for geometric complexities that cannot be molded or otherwise fabricated.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Enhance Customer Experience</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-family: Times New Roman; font-size: 10pt;">We serve nearly all our customers over the internet using our e-commerce, digital model. The majority of customers upload CAD files through our secure e-commerce platform to receive a quote, and ultimately, place an order. The order is then processed through our digital model that is connected by our systems. Having an industry leading customer experience is important to our overall growth strategy. In 2019, and as we look to 2020, the Company is focused on Protolabs 2.0, an internal project focused on our business systems designed to evolve the way we engage and serve our customers. Through development of our customer-facing and back-end systems, Protolabs 2.0 will allow us to capitalize on the market opportunity and properly serve the long-term needs of our customers. We expect the long-term benefits of the project to be an improved customer experience, speed and scalability of the business, internal business insights and internal productivity.&#xa0;</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     9
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Broaden the Parts Envelope</b></i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We regularly analyze the universe of customer design submissions that we are currently unable to manufacture and focus a portion of our research and development efforts to expand the range of parts that we can produce. Since we first introduced our Injection Molding product line in 1999, we have steadily expanded the size and geometric complexity of the injection-molded parts we are able to manufacture, and we continue to extend the diversity of materials we are able to support. Similarly, since first introducing our CNC Machining product line in 2007, we have expanded the range of part sizes, design geometries and materials we can support. In 2017, we launched PolyJet and MJF, which expanded our 3D Printing processes to support a broader range of our customers needs. Through our acquisition of RAPID in November 2017, we added quick-turn and e-commerce-enabled Sheet Metal services to our portfolio and expanded our CNC Machining capabilities to support larger and more complex projects. In 2019, we added Carbon DLS to our 3D Printing processes, introduced precision color matching on Injection Molding parts and launched production capabilities for metal 3D Printing. As we continue to expand the range of our existing process capabilities, we believe we will meet the needs of a broader set of product developers and engineers and consequently convert a higher number of quotation requests into orders.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Marketing</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As a customer centric organization, we continue to evolve our go-to-market strategy. Our&#xa0;global marketing effort generates prospects for our sales teams and seeks to strengthen our reputation as an industry leader in digital manufacturing services for custom prototyping and low-volume manufacturing. Since we are an agile, technology-based company, much of our marketing activities occur online. We use marketing automation software to enhance the productivity of our marketing and sales teams and continuously track the results of every campaign to ensure our return on investment.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We maintain top-of-mind brand awareness with product developers and engineers through regular publication of technical information including design guidelines and helpful tips, engineering white papers, educational webinars, quick videos, and a quarterly journal focused on important industry topics. We also provide complimentary physical design aids to designers and engineers &#x2014; as well as teachers and students &#x2014; that highlight technical aspects of injection molding to help create efficient, well-designed parts. We believe these educational materials are key aspects of our lead generation efforts.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 54pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Marketing represents the face of Proto Labs, so it is our goal to actively and intelligently engage designers and engineers across multiple mediums &#x2014; whether print, online, social media or in person. By doing this, we gain new customers, drive sales and build brand equity.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Sales and Customer Service</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We maintain an internal sales team trained in the basics of part design and the capabilities of our manufacturing product lines, as well as the key advantages of our processes over alternate methods of custom parts manufacturing. We organize our sales team into complementary roles: business development, account management and strategic account management, with the former focused on selling to new customer companies&#xa0;within targeted market segments&#xa0;and the latter two focused on expanding sales within existing customer companies.</p>
  <p style="margin: 0pt 7.2pt; text-align: center; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe our sales staff is adept at researching customer companies and networking to find additional product developers and engineers who may have a need for our products. We also have a team of customer service engineers who can support highly technical engineering discussions with product developers and engineers as required during the sales process. Our revenue is generated from a diverse customer base, with no single customer company representing more than 2% of our total revenue in 2019.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Competition</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The market for custom parts manufacturing is fragmented, highly competitive and subject to rapid and significant technological change. Our potential competitors include:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;"><i>Other custom parts manufacturers.</i> There are thousands of alternative manufacturing machine shops, injection molding suppliers, sheet metal fabricators, and 3D printing service bureaus and vendors worldwide. The size and scale of these businesses range from very small specialty shops to large, high-volume production manufacturers.</td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;"><i>&#x25cf;</i></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;"><i>Captive in-house product manufacturing.</i> Many larger companies undertaking product development have established additive rapid prototyping (3D printing), CNC machining, injection molding or sheet metal&#xa0;capabilities internally to support prototyping or manufacturing requirements of their product developers and engineers.</p> </td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt; vertical-align: top;">&#x25cf;</td>
     <td style="padding: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><i>Brokers. </i>There are an increasing number of digital brokers that provide product developers with a network of manufacturers, generally a subset of the other custom parts manufacturers described above, that can offer a diverse range of capabilities, capacity, competitive pricing and desired lead times to meet customer demand.</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt 0pt 50.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe that the key competitive factors in our industry include:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Quality: dimensional accuracy, surface finish, material properties, color and cleanliness;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Speed: turnaround time for quotations and parts;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 2.25pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     10
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Reliability: greater than 97% on-time delivery with predictable lead times;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Service: overall customer experience, from web interface to post-sales support;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Capability: range of part sizes and dimensional complexities supported, variety of manufacturing processes offered, materials supported and post-processing provided;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Scale: ability to support thousands of part designs in parallel;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Capacity: ability to manage peaks in demand with very short lead times and no minimum order quantities; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x25cf;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Price: mold and part pricing, including total cost of ownership.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt 0pt 50.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe that our digital end-to-end manufacturing capability positions us favorably and has enabled us to become a leader in our markets. We also believe that substantially all of our current direct competitors are relatively small in terms of size of operations, revenue, number of customers and volume of parts sold, and generally lack our technological capabilities. However, our industry is evolving rapidly and other companies, including potentially larger and more established companies with developed technological capabilities, may begin to focus on low volume, high mix custom parts manufacturing. These companies could more directly compete with us, along with our existing competitors, and could also launch new products and product lines that we do not offer that may quickly gain market acceptance. Any of the foregoing could adversely affect our ability to attract customers.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Intellectual Property</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We regard our patents, trademarks, service marks, trade dress, trade secrets, copyrights, domain names and other intellectual property as valuable to our business and rely on patent, trademark and copyright law, trade secret protection and confidentiality and/or license agreements with our employees, customers, vendors and others to protect our proprietary rights. We register our patents, trademarks and service marks in the United States and other jurisdictions as we deem appropriate. As of December&#xa0;31, 2019, we owned and had applications pending for patents relating to various aspects of our quoting and manufacturing processes as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 85%; text-indent: 0px; font-size: 10pt; margin-right: 7.5%; margin-left: 7.5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 64%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"><b>Jurisdiction</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Issued Patents</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Applications Pending</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">18</td>
     <td style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">11</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United Kingdom</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">2</td>
     <td style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Germany</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">0</td>
     <td style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 15%; text-align: center; font-size: 10pt; margin-left: 0pt;">2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our patents have expiration dates ranging from 2022 to 2032. We also owned approximately 20 registered and 3 pending United States trademarks or service marks as of December&#xa0;31, 2019, with corresponding registered protection in Europe and Japan for the most important of these marks such as PROTO LABS, PROTOMOLD, FIRSTCUT, PROTOQUOTE, FIRSTQUOTE, PROTOFLOW and FINELINE, corresponding approved protection in Canada for PROTO LABS, FIRSTCUT and FINELINE, and corresponding registered protection in Australia, Canada and Mexico for PROTOMOLD. There can be no assurance that the steps we take to protect our proprietary rights will be adequate or that third parties will not infringe or misappropriate such rights. We have been subject to claims and expect to be subject to legal proceedings and claims from time to time in the ordinary course of our business. In particular, we may face claims from third parties that we have infringed their patents, trademarks or other intellectual property rights. Such claims, even if not meritorious, could result in the expenditure of significant financial and managerial resources. Any unauthorized disclosure or use of our intellectual property could make it more expensive to do business and harm our operating results.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Employees</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As of December 31, 2019 we had 2,535&#xa0;full-time employees. We also regularly use independent contractors and other temporary employees across the organization to augment our regular staff. We believe that our future success will depend in part on our continued ability to attract, hire and retain qualified personnel.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Available Information</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our principal executive offices are located at 5540 Pioneer Creek Drive, Maple Plain, Minnesota 55359 and our telephone number is (763)&#xa0;479-3680. Our website address is www.protolabs.com. Information on our website does not constitute part of this Annual Report on Form 10-K or any other report we file or furnish with the SEC. We provide free access to various reports that we file with or furnish to the SEC through our website as soon as reasonably practicable after they have been filed or furnished. These reports include, but are not limited to, our Annual Reports on Form&#xa0;10-K, Quarterly Reports on Form&#xa0;10-Q, Current Reports on Form&#xa0;8-K and any amendments to these reports. Our SEC reports can be accessed through the investor relations section of our website.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     11
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The SEC maintains a website that contains reports, proxy and information statements, and other information regarding issuers that file information electronically with the SEC. The SEC&#x2019;s website is www.sec.gov.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Executive Officers of the Registrant</b></p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Set forth below are the names of our current executive officers, their ages, titles, the year first appointed as an executive officer, and employment for the past five years:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Victoria M. Holt</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">62</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">President, Chief Executive Officer and Director</p> </td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Robert Bodor</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">47</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Vice President/General Manager&#xa0;&#x2013;&#xa0;Americas</p> </td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">John A. Way</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">47</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Chief Financial Officer and Executive Vice President of Development</p> </td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Arthur R. Baker III</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">52</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Chief Technology Officer</p> </td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Bjoern Klaas</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">50</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Vice President/General Manager and Managing Director &#x2013;&#xa0;Europe, Middle East and Africa</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Executive officers of the Company are elected at the discretion of the board of directors with no fixed terms. There are no family relationships between or among any of the executive officers or directors of the Company.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i><b>Victoria M. Holt</b></i>. Ms. Holt has been our President and Chief Executive Officer since February 2014. Prior to joining Proto Labs, Ms. Holt served as President and Chief Executive Officer of Spartech Corporation, a leading producer of plastic sheet, compounds and packaging products, from September 2010 until Spartech was purchased by PolyOne Corporation in March 2013. Ms. Holt also is a member of the Board of Directors of Waste Management, Inc. and Piper Sandler Companies.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i><b>Robert Bodor</b></i>. Dr.&#xa0;Bodor has served as our Vice President/General Manager - Americas since January 2015. From July 2013 to January 2015, Dr. Bodor served as our Chief Technology Officer. From December 2012 to June 2013, Dr. Bodor served as our Director of Business Development. Prior to joining Proto Labs, from January 2011 to December 2012, Dr. Bodor held several roles at Honeywell, most recently leading SaaS business offerings for Honeywell&#x2019;s Life Safety Division.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i><b>John A. Way</b></i>. Mr.&#xa0;Way has served as our Chief Financial Officer and Executive Vice President of Development since December 2014. From September 2012 to September 2014, Mr. Way served as Chief Financial Officer for portfolio companies of two Private Equity Firms. From October 2002 to September 2012, Mr.&#xa0;Way worked in senior financial positions at several divisions within UnitedHealth Group, including Chief Financial Officer of Optum Care, Medicare Advantage and OptumHealth.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i><b>Arthur R. Baker III</b></i>. Dr. Baker has been our Chief Technology Officer since May 2016. Prior to joining Proto Labs, Dr. Baker served as Chief Technology Officer of PaR Systems, a robotics and specialty machine tool builder. From 2005 to 2014, Dr. Baker held multiple positions at MTS Systems, including General Manager of the Test Division, Chief Technology Officer, and Vice President of Engineering and Operations. MTS Systems was a leader in mechanical testing and simulation systems for automotive, aerospace, medical, civil-seismic and general research.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i><b>Bjoern Klaas</b></i>. Mr. Klaas has led our company&#x2019;s business in Europe, Middle East and Africa as the Vice President and Managing Director since December 2017. Prior to joining Proto Labs, Mr. Klaas held key positions with global polymer supplier PolyOne from 2012 to 2017, most recently as its Vice President and General Manager for its ColorMatrix Group headquartered in the United States. From 2008 to 2012, Mr. Klaas worked at Colorant-Chromatics, a global leader for high temperature polymer formulations, as the General Manager for the global business.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     12
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item1a_riskfactors" title="item1a_riskfactors" href="#"></a>Item&#xa0;1A. Risk Factors</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following are the significant factors that could materially adversely affect our business, financial condition, or operating results, as well as adversely affect the value of an investment in our common stock.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Risks Relating to Our Business</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We face significant competition and expect to face increasing competition in many aspects of our business, which could cause our operating results to suffer.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The market for custom parts manufacturing is fragmented and highly competitive. We compete for customers with a wide variety of custom parts manufacturers and methods. Some of our current and potential competitors include captive in-house product lines, other custom parts manufacturers, brokers of custom parts and alternative manufacturing vendors such as those utilizing 3D printing processes. Moreover, some of our existing and potential competitors are researching, designing, developing and marketing other types of products and product lines. We also expect that future competition may arise from the development of allied or related techniques for custom parts manufacturing that are not encompassed by our patents, from the issuance of patents to other companies that may inhibit our ability to develop certain products and from improvements to existing technologies. Furthermore, our competitors may attempt to adopt and improve upon key aspects of our business model, such as development of technology that automates much of the manual labor conventionally required to quote and manufacture custom parts, implementation of interactive web-based and automated user interface and quoting systems and/or building scalable operating models specifically designed for efficient custom production. Third-party CAD software companies may develop software that mold-makers, injection molders and CNC machine shops could use to compete with our business model. Additive manufacturers may develop stronger, higher temperature resins or introduce other improvements that could more effectively compete with us on part quality. We may also, from time to time, establish alliances or relationships with other competitors or potential competitors. To the extent companies terminate such relationships and establish alliances and relationships with our competitors, our business could be harmed.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Existing and potential competitors may have substantially greater financial, technical, marketing and sales, manufacturing, distribution and other resources and name recognition than us, as well as experience and expertise in intellectual property rights and operating within certain international locations, any of which may enable them to compete effectively against us.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Though we plan to continue to expend resources to develop new technologies, processes and product lines, we cannot assure you that we will be able to maintain our current position or continue to compete successfully against current and future sources of competition. Our challenge in developing new products is finding product lines for which our automated quotation and manufacturing processes offer an attractive value proposition, and we may not be able to find any new product lines with potential economies of scale similar to our existing product lines. If we do not keep pace with technological change and introduce new technologies, processes and product lines, the demand for our products and product lines may decline and our operating results may suffer.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our success depends on our ability to deliver products and product lines that meet the needs of product developers and engineers and to effectively respond to changes in our industry.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We derive almost all of our revenue from the manufacture and sale to product developers and engineers of quick-turn low volumes of custom parts for prototyping, support of internal manufacturing and limited quantity product release. Our business has been, and, we believe, will continue to be, affected by changes in product developer and engineering requirements and preferences, rapid technological change, new product and product line introductions and the emergence of new standards and practices, any of which could render our technology, products and product lines less attractive, uneconomical or obsolete. To the extent that our customers&#x2019; need for quick-turn parts decreases significantly for any reason, it would likely have a material adverse effect on our business and operating results and harm our competitive position. In addition, CAD simulation and other technologies may reduce the demand for physical prototype parts. Therefore, we believe that to remain competitive, we must continually expend resources to enhance and improve our technology, product offerings and product lines.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     13
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In particular, we plan to increase our research and development efforts and to continue to focus a significant portion of those efforts to further develop our technology in areas such as our interactive user interface and manufacturing processes, potentially introduce new manufacturing processes within the research and development initiative we refer to as Protoworks, and broaden the range of parts that we are able to manufacture. We believe successful execution of this part of our business plan is critical for our ability to compete in our industry and grow our business, and there are no guarantees we will be able to do so in a timely fashion, or at all. Broadening the range of parts we offer is of particular importance since limitations in manufacturability are the primary reason we are not able to fulfill many quotation requests. There are no guarantees that the resources devoted to executing on this aspect of our business plan will improve our business and operating results or result in increased demand for our products and product lines. Failures in this area could adversely impact our operating results and harm our reputation and brand. Even if we are successful in executing in these areas, our industry is subject to rapid and significant technological change, and our competitors may develop new technologies, processes and product lines that are superior to ours. Our research and development costs were approximately $32.7 million, $28.7 million and $23.6 million for the years ended December 31, 2019, 2018 and 2017, respectively, and there is no guarantee that these costs will enable us to maintain or grow our revenue profitability. Refer to Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations&#x201d; in this Annual Report on Form 10-K for additional discussion related to research and development costs.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Any failure to properly meet the needs of product developers and engineers or respond to changes in our industry on a cost-effective and timely basis, or at all, would likely have a material adverse effect on our business and operating results and harm our competitive position.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our failure to meet our customers' expectations regarding quick turnaround time would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe many product developers and engineers are facing increased pressure from global competitors to be first to market with their finished products, often resulting in a need for quick turnaround of custom parts. We believe our ability to quickly quote, manufacture and ship custom parts has been an important factor in our results to date. There are no guarantees we will be able to meet product developers&#x2019; and engineers&#x2019; increasing expectations regarding quick turnaround time, especially as we increase the scope of our operations. If we fail to meet our customers&#x2019; expectations regarding turnaround time in any given period, our business and results of operations will likely suffer.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our failure to meet our customers&#x2019; price expectations would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Demand for our product lines is sensitive to price. We believe our competitive pricing has been an important factor in our results to date. Therefore, changes in our pricing strategies can have a significant impact on our business and ability to generate revenue. Many factors, including our production and personnel costs and our competitors&#x2019; pricing and marketing strategies, can significantly impact our pricing strategies. If we fail to meet our customers&#x2019; price expectations in any given period, demand for our products and product lines could be negatively impacted and our business and results of operations could suffer.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our failure to meet our customers' quality specifications would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe many product developers and engineers have a need for specific quality of quick-turn, on-demand custom parts. We believe our ability to create parts with the specifications of the product developers and engineers is an important factor in our results to date. If we fail to meet our customers&#x2019; specifications in any given period, demand for our products and product lines could be negatively impacted and our business and results of operations could suffer.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>The strength of our brand is important to our business, and any failure to maintain and enhance our brand would hurt our ability to retain and expand our customer base as well as further penetrate existing customers.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Since our products and product lines are sold primarily through our websites, the success of our business depends upon our ability to attract new and repeat customers to our websites in order to increase business and grow our revenue. Customer awareness and the perceived value of our brand will depend largely on the success of our marketing efforts, as well as our ability to consistently provide quality custom parts within the required timeframes and positive customer experiences, which we may not do successfully. A primary component of our business strategy is the continued promotion and strengthening of our brand, and we have incurred and plan to continue to incur substantial expense related to advertising and other marketing efforts directed toward enhancing our brand. We have initiated marketing efforts through social media, but this method of marketing may not be successful and subjects us to a greater risk of inconsistent messaging and bad publicity. We may choose to increase our branding expense materially, but we cannot be sure that this investment will be profitable. If we are unable to successfully maintain and enhance our brand, this could have a negative impact on our business and ability to generate revenue.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     14
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our business depends in part on our ability to process a large volume of new part designs from a diverse group of product developers and engineers and successfully identify significant opportunities for our business based on those submissions.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe the volume of new part designs we process and the size and diversity of our customer base give us valuable insight into the needs of our prospective customers. We utilize this industry knowledge to determine where we should focus our development resources. If the number of new part designs we process or the size and diversity of our customer base decrease, our ability to successfully identify significant opportunities for our business and meet the needs of product developers and engineers could be negatively impacted. In addition, even if we do continue to process a large number of new part designs and work with a significant and diverse customer base, there are no guarantees that any industry knowledge we extract from those interactions will be successfully utilized to help us identify significant business opportunities or better understand the needs of product developers and engineers.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>The loss of one or more key members of our management team or personnel, or our failure to attract, integrate and retain additional personnel in the future, could harm our business and negatively affect our ability to successfully grow our business.</b></i></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are highly dependent upon the continued service and performance of the key members of our management team and other personnel. The loss of any of these individuals, each of whom is &#x201c;at will&#x201d; and may terminate his or her employment relationship with us at any time, could disrupt our operations and significantly delay or prevent the achievement of our business objectives. We believe that our future success will also depend in part on our continued ability to identify, hire, train and motivate qualified personnel. A possible shortage of qualified individuals in the regions where we operate might require us to pay increased compensation to attract and retain key employees, thereby increasing our costs. In addition, we face intense competition for qualified individuals from numerous companies, many of whom have substantially greater financial and other resources and name recognition than us. We may be unable to attract and retain suitably qualified individuals who are capable of meeting our growing operational, managerial and other requirements, or we may be required to pay increased compensation in order to do so. Our failure to attract, hire, integrate and retain qualified personnel could impair our ability to achieve our business objectives.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If we fail to grow our business as anticipated, our net sales, gross margin and operating margin will be adversely affected.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are attempting to grow our business substantially. To this end, we have made and expect to continue to make significant investments in our business, including investments in our infrastructure, technology, and marketing and sales efforts. These investments include dedicated facilities expansion and increased staffing, both domestic and international. If our business does not generate the level of revenue required to support our investment, our net sales and profitability will be adversely affected.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If we are unable to manage our growth and expand our operations successfully, our reputation and brand may be damaged, and our business and results of operations may be harmed.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Over the past several years, we have experienced rapid growth. For example, we have grown from 1,549 full-time employees as of January&#xa0;1, 2016 to 2,535&#xa0;full-time employees as of December&#xa0;31, 2019. We have expanded internationally, including establishing manufacturing operations in Europe in 2005 and Japan in 2009. In 2014, we expanded our product lines with 3D Printing through our acquisition of FineLine. In 2015, we expanded our manufacturing operations and our 3D Printing product lines in Europe through our acquisition of Alphaform. In 2017, we expanded our product lines to include Sheet Metal through our acquisition of RAPID. We expect this growth to continue and the number of countries and facilities from which we operate to increase in the future. Our ability to effectively manage our anticipated growth and expansion of our operations will require us to do, among other things, the following:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">enhance our operational, financial and management controls and infrastructure, human resource policies, and reporting systems and procedures, in particular as we continue to operate as a global organization;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">effectively scale our operations, including accurately predicting the need for floor space, equipment, and additional&#xa0;staffing;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">successfully identify, recruit, hire, train, develop, maintain, motivate and integrate additional employees; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">expand our international resources.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">These enhancements and improvements will require significant capital expenditures and allocation of valuable management and employee resources. Furthermore, our growth, combined with the geographical dispersion of our operations, has placed, and will continue to place, a strain on our operational, financial and management infrastructure. Our future financial performance and our ability to execute on our business plan will depend, in part, on our ability to effectively manage any future growth and expansion. There are no guarantees we will be able to do so in an efficient or timely manner, or at all. Our failure to effectively manage growth and expansion could have a material adverse effect on our business, results of operations, financial condition, prospects, and reputation and brand, including impairing our ability to perform to our customers&#x2019; expectations.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     15
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We may not timely and effectively scale and adapt our existing technology, processes and infrastructure to meet the needs of our business.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">A key element to our continued growth is the ability to quickly and efficiently quote an increasing number of product developer and engineer submissions across geographic regions and to manufacture the related parts. This will require us to timely and effectively scale and adapt our existing technology, processes and infrastructure to meet the needs of our business. With respect to our websites and quoting technology, it may become increasingly difficult to maintain and improve their performance, especially during periods of heavy usage and as our solutions become more complex and our user traffic increases across geographic regions. Similarly, our manufacturing automation technology may not enable us to process the large numbers of unique designs and efficiently manufacture the related parts in a timely fashion to meet the needs of product developers and engineers as our business continues to grow. Any failure in our ability to timely and effectively scale and adapt our existing technology, processes and infrastructure could negatively impact our ability to retain existing customers and attract new customers, damage our reputation and brand, result in lost revenue, and otherwise substantially harm our business and results of operations.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 0pt; font-size: 10pt;"><i><b>We may experience difficulties implementing our new e-commerce system and updates to our back-end systems.</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 0pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-family: Times New Roman; font-size: 10pt;">We are engaged in implementing a new e-commerce system. The e-commerce system is designed to improve our customer experience which will allow us to capitalize on the market opportunity and properly serve the long-term needs of our customers. We are updating back-end systems with standard software packages augmented by internally developed software to ensure the scalability of our architecture moving forward. These activities have required, and will continue to require, the investment of significant personnel and financial resources. We may not be able to successfully implement the e-commerce system without experiencing delays, increased costs and other difficulties. If we are unable to successfully design and implement the new e-commerce system and supporting architecture as planned, our financial positions, results of operations and cash flows could be negatively impacted. Additionally, if we do not effectively implement the new e-commerce system as planned or the back-end systems do not operate as intended, our ability to process orders, manufacture and ship parts, send invoices and track payments, fulfill contractual obligations or otherwise operate our business could be adversely affected. While we have invested significant resources in planning, project management, and training, additional and significant implementation issues may arise.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><i><b>Numerous factors may cause us not to maintain the revenue growth that we have historically experienced.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Although our revenue has grown over the past&#xa0;five years from $264.1 million for the year ended December&#xa0;31, 2015 to $458.7 million for the year ended December&#xa0;31, 2019, we may not be able to maintain our historical rate of revenue growth. We believe that our continued revenue growth will depend on many factors, a number of which are out of our control, including among others, our ability to:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">retain and further penetrate existing customer companies, as well as attract new customer companies;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">consistently execute on custom part orders in a manner that satisfies product developers&#x2019;&#xa0;and engineers&#x2019;&#xa0;needs and provides them with a superior experience;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">develop new technologies or manufacturing processes and broaden the range of parts we offer;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">successfully execute on our international strategy and expand into new geographic markets;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">capitalize on product developer and engineer expectations for access to comprehensive, user-friendly e-commerce capabilities 24 hours per day, 7 days per week;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">increase the strength and awareness of our brand across geographic regions;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">respond to changes in product developer and engineer needs, technology and our industry;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">react to challenges from existing and new competitors; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">respond to an economic recession which negatively impacts manufacturers' ability to innovate and bring new products to market.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We cannot assure you that we will be successful in addressing the factors above and continuing to grow our business and revenue.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our operating results and financial condition may fluctuate on a quarterly and annual basis.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our operating results and financial condition may fluctuate from quarter to quarter and year to year, and are likely to continue to vary due to a number of factors, some of which are outside of our control. In addition, our actual or projected operating results may fail to match our past performance. These events could in turn cause the market price of our common stock to fluctuate. If our operating results do not meet the expectations of securities analysts or investors, who may derive their expectations by extrapolating data from recent historical operating results, the market price of our common stock will likely decline.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">Our operating results and financial condition may fluctuate due to a number of factors, including those listed below and those identified throughout this &#x201c;Risk Factors&#x201d; section:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the development of new competitive systems or processes by others;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the entry of new competitors into our market, whether by established companies or by new companies;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     16
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in the size and complexity of our organization, including our international operations;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">levels of sales of our products and product lines&#xa0;to new and existing customers;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the geographic distribution of our sales;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in product developer and engineer preferences or needs;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in the amount that we invest to develop, acquire or license new technologies and processes, which we anticipate will generally increase and may fluctuate in the future;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">delays between our expenditures to develop, acquire or license new technologies and processes, and the generation of sales related thereto;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">our ability to timely and effectively scale our business during periods of sequential quarterly or annual growth;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">limitations or delays in our ability to reduce our expenses during periods of declining sequential quarterly or annual revenue;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in our pricing policies or those of our competitors, including our responses to price competition;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in the amount we spend in our marketing and other efforts;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">unexpected increases in expenses as compared to our related accounting accruals or operating plan;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the volatile global economy;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">general economic and industry conditions that affect customer demand and product development trends;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">interruptions to or other problems with our website and interactive user interface, information technology systems, manufacturing processes or other operations;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in accounting rules and tax and other laws; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">plant shutdowns due to a health pandemic or weather conditions.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Due to all of the foregoing factors and the other risks discussed in this &#x201c;Risk Factors&#x201d; section, you should not rely on quarter-to-quarter or year-to-year comparisons of our operating results as an indicator of future performance.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Interruptions to or other problems with our website and interactive user interface, information technology systems, manufacturing processes or other operations could damage our reputation and brand and substantially harm our business and results of operations.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The satisfactory performance, reliability, consistency, security and availability of our websites and interactive user interface, information technology systems, manufacturing processes and other operations are critical to our reputation and brand, and to our ability to effectively service product developers and engineers. Any interruptions or other problems that cause any of our websites, interactive user interface or information technology systems to malfunction or be unavailable, or negatively impact our manufacturing processes or other operations, may damage our reputation and brand, result in lost revenue, cause us to incur significant costs seeking to remedy the problem and otherwise substantially harm our business and results of operations.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">A number of factors or events could cause such interruptions or problems, including among others: human and software errors, design faults, challenges associated with upgrades, changes or new facets of our business, power loss, telecommunication failures, fire, flood, extreme weather, political instability, acts of terrorism, war, break-ins and security breaches, contract disputes, labor strikes and other workforce-related issues, capacity constraints due to an unusually large number of product developers and engineers accessing our websites or ordering parts at the same time, and other similar events. These risks are augmented by the fact that our customers come to us largely for our quick-turn manufacturing capabilities and that accessibility and turnaround speed are often of critical importance to these product developers and engineers. We are dependent upon our facilities through which we satisfy all of our production demands and in which we house all of the computer hardware necessary to operate our websites and systems as well as managerial, customer service, sales, marketing and other similar functions, and we have not identified alternatives to these facilities or established fully redundant systems in multiple locations. However, we have back-up computing systems for each of our United States, European and Japanese operations. In addition, we are dependent in part on third parties for the implementation and maintenance of certain aspects of our communications and production systems, and therefore preventing, identifying and rectifying problems with these aspects of our systems is to a large extent outside of our control.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     17
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Moreover, the business interruption insurance that we carry may not be sufficient to compensate us for the potentially significant losses, including the potential harm to the future growth of our business that may result from interruptions in our product lines as a result of system failures.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We store confidential customer&#xa0;information in our systems&#xa0;that, if&#xa0;breached or otherwise subjected to unauthorized access, may harm our reputation or brand or expose us to liability.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our system stores, processes and transmits our customers&#x2019; confidential information, including the intellectual property in their part designs and other sensitive data. We rely on encryption, authentication and other technologies licensed from third parties, as well as administrative and physical safeguards, to secure such confidential information. Any compromise of our information security could damage our reputation and brand and expose us to a risk of loss, costly litigation and liability that would substantially harm our business and operating results. We may not have adequately assessed the internal and external risks posed to the security of our company&#x2019;s systems and information and may not have implemented adequate preventative safeguards or take adequate reactionary measures in the event of a security incident. In addition, most states have enacted laws requiring companies to notify individuals and often state authorities of data security breaches involving their personal data. These mandatory disclosures regarding a security breach often lead to widespread negative publicity, which may cause our existing and prospective customers to lose confidence in the effectiveness of our data security measures. Any security breach, whether successful or not, would harm our reputation and brand and could cause the loss of customers.</p>
  <p style="margin: 0pt 22.2pt 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Aspects of our business are subject to privacy, data use and data security regulations, which may impact the way we use data to target customers.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Privacy and security laws and regulations may limit the use and disclosure of certain information and require us to adopt certain cybersecurity and data handling practices that may affect our ability to effectively market our services to current, past or prospective customers. In many jurisdictions consumers must be notified in the event of a data security breach, and such notification requirements continue to increase in scope and cost. The changing privacy laws in the United States, Europe and elsewhere&#x2014;including the General Data Protection Regulation (GDPR) in the European Union, which became effective May 25, 2018, and the California Consumer Privacy Act of 2018, which was enacted on June 28, 2018 and became effective on January 1, 2020&#x2014;create new individual privacy rights and impose increased obligations, including disclosure obligations, on companies handling personal data. The impact of these continuously evolving laws and regulations could have a material adverse effect on the way we use data to digitally market and pursue our customers.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Global economic conditions may harm our ability to do business, increase our costs and negatively affect our stock price.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The prospects for economic growth in the United States and other countries remain uncertain and could worsen. Economic concerns and other issues such as reduced access to capital for businesses may cause product developers and engineers to further delay or reduce the product development projects that our business supports. Given the continued uncertainty concerning the global economy, we face risks that may arise from financial difficulties experienced by our suppliers, product developers and engineers and other related risks to our business.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     18
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Political and economic uncertainty arising from the outcome of the United Kingdom&#x2019;s referendum on its membership in the European Union could adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">On June 23, 2016, the United Kingdom (UK) held a referendum in which voters approved a withdrawal from the European Union (EU), commonly referred to as &#x201c;Brexit.&#x201d; The UK's withdrawal became effective on January 31, 2020. A transition period will apply until the end of 2020 while the UK and EU negotiate rules that will apply to their future relationship. It is possible that the level of economic activity in this region will be adversely impacted and that there will be increased regulatory and legal complexities, including those relating to tax, trade, security and employees. In addition, Brexit could lead to economic uncertainty, including significant volatility in global stock markets and currency exchange rates, which may adversely impact our business. To mitigate the potential impact of Brexit on the import and export of goods to and from the UK, the Company is establishing business processes with shipping entities, including obtaining Authorized Economic Operator certification. In addition, the Company is increasing inventory in the UK and EU in an effort to maintain inventory required to meet customer demand in the event of disruption in shipments. Although the specific terms and the timeframe of the negotiations are unknown, it is possible that these changes could adversely affect our business and results of operations.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We operate a global business that exposes us to additional risks.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have established our operations in the United States, Europe and Japan and are seeking to further expand our international operations. As of December&#xa0;31, 2019, we had sold products into approximately 60 countries. In addition to English, our website is available in British English, French, German, Italian, Japanese and Spanish. Our international revenue accounted for approximately 22%, 21% and 24% of our total revenue in the years ended December 31, 2019, 2018 and 2017, respectively. The future growth and profitability of our international business is subject to a variety of risks and uncertainties. Many of the following factors have adversely affected our international operations and sales to customers located outside of the United States and may again in the future:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">difficulties in staffing and managing foreign operations, particularly in new geographic locations;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">challenges in providing solutions across a significant distance, in different languages and among different cultures;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">rapid changes in government, economic and political policies and conditions, political or civil unrest or instability, terrorism or epidemics, and other similar outbreaks or events;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">economic uncertainty, including significant volatility in global stock markets and currency exchange rates, resulting from Brexit;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">fluctuations in foreign currency exchange rates;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">differences in product developer and engineer preferences and means of procuring parts;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">compliance with and changes in foreign laws and regulations, as well as U.S. laws affecting the activities of U.S. companies abroad, including those associated with export controls, tariffs and embargoes, other trade restrictions and antitrust and data privacy concerns;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">different, complex and changing laws governing intellectual property rights, sometimes affording companies lesser protection in certain areas;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">differing&#xa0;levels of use of the Internet or 3D CAD software;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">seasonal reductions in business activity in certain parts of the world, particularly during the summer months in Europe and holiday season;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">higher costs of doing business internationally;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">interruptions resulting from any events affecting raw material supply or manufacturing capabilities abroad;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">protectionist laws and business practices that favor local producers and service providers;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">taxation;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">energy costs;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">restrictions imposed by local labor practices and laws on our business and operations;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">workforce uncertainty in countries where labor unrest is more common than in the United States;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">transportation delays; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">increased payment risk and higher levels of payment fraud.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     19
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our business depends on product developers&#x2019; and engineers&#x2019; demand for our product lines, the general economic health of current and prospective customers, and companies&#x2019; desire or ability to make investments in new products. A deterioration of global, regional or local political, economic or social conditions could affect potential customers in ways that reduce demand for our product lines, disrupt our manufacturing and sales plans and efforts or otherwise negatively impact our business. Acts of terrorism, wars, public health issues and increased energy costs could disrupt commerce in ways that could impair our ability to get products to our customers and increase our manufacturing and delivery costs. We have not undertaken hedging transactions to cover our foreign currency exposure, and changes in foreign currency exchange rates may negatively impact reported revenue and expenses. In addition, our sales are often made on unsecured credit terms, and a deterioration of political, economic or social conditions in a given country or region could reduce or eliminate our ability to collect accounts receivable in that country or region. In any of these events, our results of operations could be materially and adversely affected.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If a natural or man-made disaster strikes any of our manufacturing facilities, we will be unable to manufacture our products for a substantial amount of time and our sales will decline.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We manufacture all of our products in 12 manufacturing facilities, located in Maple Plain, Minnesota; Rosemount, Minnesota; Plymouth, Minnesota; Brooklyn Park, Minnesota; Cary, North Carolina; Nashua, New Hampshire (3 facilities); Telford, United Kingdom; Feldkirchen, Germany; Eschenlohe, Germany; and Zama, Kanagawa, Japan. These facilities and the manufacturing equipment we use would be costly to replace and could require substantial lead time to repair or replace. Our facilities may be harmed by natural or man-made disasters, including, without limitation, earthquakes, floods, tornadoes, fires, hurricanes, tsunamis and nuclear disasters.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In the event any of our facilities are affected by a disaster, we may:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">be unable to meet the shipping deadlines of our customers;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">experience disruptions in our ability to process submissions and generate quotations, manufacture and ship parts, provide marketing and sales support and customer service, and otherwise operate our business, any of which could negatively impact our business;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">be forced to rely on third-party manufacturers;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">need to expend significant capital and other resources to address any damage caused by the disaster; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">lose customers and be unable to regain those customers.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Although we possess insurance for damage to our property and the disruption of our business from casualties, this insurance may not be sufficient to cover all of our potential losses and may not continue to be available to us on acceptable terms, or at all.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If our present single or limited source suppliers become unavailable or inadequate, our customer relationships, results of operations and financial condition may be adversely affected.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We acquire substantially all of the manufacturing equipment and certain of our materials that are critical to the ongoing operation and future growth of our business from several third parties. We do not have long-term supply contracts with any of our suppliers and operate on a purchase-order basis. While most manufacturing equipment and materials for our products are available from multiple suppliers, certain of those items are only available from single or limited sources. Should any of our present single or limited source suppliers for manufacturing equipment or materials become unavailable or inadequate, or impose terms unacceptable to us such as increased pricing terms, we could be required to spend a significant amount of time and expense to develop alternate sources of supply, and we may not be successful in doing so on terms acceptable to us, or at all. Natural disasters, such as hurricanes, may affect our supply of materials, particularly resins, from time to time, and we may purchase larger amounts of certain materials in anticipation of future shortages or increases in pricing. In addition, if we were unable to find a suitable supplier for a particular type of manufacturing equipment or material, we could be required to modify our existing business processes and offerings to accommodate the situation. As a result, the loss of a single or limited source supplier could adversely affect our relationship with our customers and our results of operations and financial condition.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We may not be able to adequately protect or enforce our intellectual property rights, which could impair our competitive position.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our success and future revenue growth will depend, in part, on our ability to protect our intellectual property. We rely primarily on patents, licenses, trademarks and trade secrets, as well as non-disclosure agreements and other methods, to protect our proprietary technologies and processes globally. Despite our efforts to protect our proprietary technologies and processes, it is possible that competitors or other unauthorized third parties may obtain, copy, use or disclose our technologies and processes. We cannot assure you that any of our existing or future patents will not be challenged, invalidated or circumvented. As such, any rights granted under these patents may not provide us with meaningful protection. We may not be able to obtain foreign patents corresponding to our United States patents. Even if foreign patents are granted, effective enforcement in foreign countries may not be available. If our patents and other intellectual property do not adequately protect our technology, our competitors may be able to offer product lines similar to ours. Our competitors may also be able to develop similar technology independently or design around our patents. Any of the foregoing events would lead to increased competition and lower revenue or gross margin, which would adversely affect our net income.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     20
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We may be subject to infringement claims.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We may be subject to intellectual property infringement claims from individuals, vendors and other companies who have acquired or developed patents in the fields of injection molding, CNC machining,&#xa0;3D printing, sheet metal fabrication or part production for purposes of developing competing products or for the sole purpose of asserting claims against us. Any claims that our products or processes infringe the intellectual property rights of others, regardless of the merit or resolution of such claims, could cause us to incur significant costs in responding to, defending and resolving such claims, and may prohibit or otherwise impair our ability to commercialize new or existing products. If we are unable to effectively defend our processes, our market share, sales and profitability could be adversely impacted.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our failure to expand our intellectual property portfolio could adversely affect the growth of our business and results of operations.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Expansion of our intellectual property portfolio is one of the available methods of growing our revenue and our profits. This involves a complex and costly set of activities with uncertain outcomes. Our ability to obtain patents and other intellectual property can be adversely affected by insufficient inventiveness of our employees, by changes in intellectual property laws, treaties, and regulations, and by judicial and administrative interpretations of those laws, treaties and regulations. Our ability to expand our intellectual property portfolio could also be adversely affected by the lack of valuable intellectual property for sale or license at affordable prices. There is no assurance that we will be able to obtain valuable intellectual property in the jurisdictions where we and our competitors operate or that we will be able to use or license that intellectual property.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We may be subject to product liability claims, which could result in material expense, diversion of management time and attention and damage to our business and reputation and brand.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The prototype parts we manufacture and the parts we manufacture in low volumes may contain undetected defects or errors that are not discovered until after the products have been installed and used by customers. This could result in claims from customers or others, damage to our business and reputation and brand, or significant costs to correct the defect or error.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We attempt to include provisions in our agreements with customers that are designed to limit our exposure to potential liability for damages arising from defects or errors in our products. However, it is possible that these limitations may not be effective as a result of unfavorable judicial decisions or laws enacted in the future.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The sale and support of our products entails the risk of product liability claims. Any product liability claim brought against us, regardless of its merit, could result in material expense, diversion of management time and attention, damage to our business and reputation and brand, and cause us to fail to retain existing customers or to fail to attract new customers.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Government regulation of the Internet and e-commerce is evolving, and unfavorable changes or failure by us to comply with these regulations could substantially harm our business and results of operations.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are subject to general business regulations and laws as well as regulations and laws specifically governing the Internet and e-commerce. Existing and future laws and regulations may impede the growth of the Internet or other online services. These regulations and laws may cover taxation, restrictions on imports and exports, customs, tariffs, user privacy, data protection, pricing, content, copyrights, distribution, electronic contracts and other communications, consumer protection, the provision of online payment services, broadband residential Internet access and the characteristics and quality of products and product lines. It is not clear how existing laws governing issues such as property use and ownership, sales and other taxes, fraud, libel and personal privacy apply to the Internet and e-commerce, especially where these laws were adopted prior to the advent of the Internet and do not contemplate or address the unique issues raised by the Internet or e-commerce. Those laws that do reference the Internet are being interpreted by the courts and their applicability and reach are therefore uncertain. The costs of compliance with these regulations may increase in the future as a result of changes in the regulations or the interpretation of them. Further, any failures on our part to comply with these regulations may subject us to significant liabilities. Those current and future laws and regulations or unfavorable resolution of these issues may substantially harm our business and results of operations.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Changes in, or interpretation of, tax rules and regulations may impact our effective tax rate and future profitability.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are a multinational company based in the United States and subject to tax in multiple tax jurisdictions, both domestic and abroad. Our future effective tax rates could be adversely affected by changes in statutory tax rates or interpretation of tax rules, including those set forth in the Tax Cuts and Jobs Act&#xa0;enacted in 2017,&#xa0;and regulations in jurisdictions in which we do business, changes in the amount of revenue or earnings in the countries with varying statutory tax rates, or by changes in the valuation of deferred tax assets and liabilities.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     21
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In addition, we are subject to audits and examinations of previously filed income tax returns by the Internal Revenue Service, or IRS, and other domestic and foreign tax authorities. We regularly assess the potential impact of such examinations to determine the adequacy of our provision for income taxes and have reserved for potential adjustments that may result from the current examinations. We believe such estimates to be reasonable; however, there is no assurance that the final determination of any examination will not have an adverse effect on our operating results and financial position.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We may require additional capital to support business growth, and this capital might not be available on acceptable terms, if at all.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We intend to continue to make investments to support our business growth and may require additional funds to respond to business challenges, including the need to complement our growth strategy, increase market share in our current markets or expand into other markets, or broaden our technology, intellectual property or product line capabilities. Accordingly, we may need to engage in equity or debt financings to secure additional funds. If we raise additional funds through future issuances of equity or convertible debt securities, our existing shareholders could suffer significant dilution, and any new equity securities we issue could have rights, preferences and privileges superior to those of holders of our common stock. Any debt financing we secure in the future could involve restrictive covenants relating to our capital raising activities and other financial and operational matters, which may make it more difficult for us to obtain additional capital and to pursue business opportunities, including potential acquisitions. We may not be able to obtain additional financing on terms favorable to us, if at all. If we are unable to obtain adequate financing or financing on terms satisfactory to us when we require it, our ability to continue to support our business growth and to respond to business challenges could be significantly impaired, and our business may be harmed.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Any acquisition, strategic relationship, joint venture or investment could disrupt our business and harm our operating results and financial condition.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our business and our customer base have been built primarily through organic growth. However, from time to time, we may selectively pursue acquisitions, strategic relationships, joint ventures or investments that we believe may allow us to complement our growth strategy, increase market share in our current markets or expand into other markets, or broaden our technology, intellectual property or product line capabilities. For example, in April 2014, we acquired FineLine to enable us to offer our customers 3D printing manufacturing processes; in October 2015, we acquired Alphaform to enable us to expand our 3D printing capabilities in Europe, and in November 2017, we acquired RAPID to enable us to offer our customers Sheet Metal and expand our CNC Machining&#xa0;processes. We cannot forecast the number, timing or size of any future acquisitions or other similar strategic transactions, or the effect that any such transactions might have on our operating or financial results. We have limited experience engaging in these types of transactions. Such transactions may be complex, time consuming and expensive, and may present numerous challenges and risks including:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">an acquired company, asset or technology not furthering our business strategy as anticipated;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">difficulties entering and competing in new product or geographic markets and increased competition, including price competition;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">integration challenges;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">challenges in working with strategic partners and resolving any related disagreements or disputes;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">high valuation for a company, asset or technology, or changes in the economic or market conditions or assumptions underlying our decision to make an acquisition;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">significant problems or liabilities, including increased intellectual property and employment related litigation exposure, associated with acquired businesses, assets or technologies;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">acquisition of a significant amount of goodwill, which could result in future impairment charges that would reduce our earnings; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">requirements to record substantial charges and amortization expense related to certain purchased intangible assets, deferred stock compensation and other items, as well as other charges or expenses.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Any one of these challenges or risks could impair our ability to realize any benefit from our acquisitions, strategic relationships, joint ventures or investments after we have expended resources on them, as well as divert our management&#x2019;s attention. Any failure to successfully address these challenges or risks could disrupt our business and harm our operating results and financial condition. Moreover, any such transaction may not be viewed favorably by investors or stakeholders.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     22
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In addition, from time to time we may enter into negotiations for acquisitions, relationships, joint ventures or investments that are not ultimately consummated. These negotiations could result in significant diversion of management time, as well as substantial out-of-pocket costs.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our business involves the use of hazardous materials, and we and our suppliers must comply with environmental laws and regulations, which can be expensive and restrict how we do business.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our business involves the controlled storage, use and disposal of hazardous materials. We and our suppliers are subject to federal, state and local as well as foreign laws and regulations governing the use, manufacture, storage, handling and disposal of these hazardous materials. Although we believe that the safety procedures utilized by us and our suppliers for handling and disposing of these materials comply with the standards prescribed by these laws and regulations, we cannot eliminate the risk of accidental contamination or injury from these materials. In the event of an accident, state, federal or foreign authorities may curtail the use of these materials and interrupt our business operations. We do not currently maintain hazardous materials insurance coverage. If we are subject to any liability as a result of activities involving hazardous materials, our business and financial condition may be adversely affected and our reputation and brand may be harmed.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If we are unable to meet quality standards applicable to our manufacturing and quality processes for the parts we manufacture, our business, financial condition or operating results could be harmed.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt;">As a manufacturer of CNC-machined and injection-molded custom parts, we conform to certain international standards, including International Organization for Standardization, or ISO, 9001:2015 for our injection molding facilities and the AS9001D standard for our CNC-machined facilities in Minnesota. In North Carolina, we conform to the ISO 9001:2015 standard for our plastics manufacturing and the AS9100D standard for our metals manufacturing. In New Hampshire, we conform to the ISO 9001:2015 and the AS9100D standards for our CNC-machined and sheet metal custom parts. We also conform to international standard ISO 9001:2008 at our manufacturing facilities in Feldkirchen, Germany and Eschenlohe, Germany. Additionally, we conform to international standard ISO 13485 at our manufacturing facility in Eschenlohe, Germany and&#xa0;international standard ISO 14001 at our manufacturing facility in Feldkirchen, Germany. Lastly, we conform to international standards ISO 9001, ISO 14001 and ISO 27001 at our facilities in Japan. If any system inspection reveals that we are not in compliance with applicable standards, registrars may take action against us, including issuing a corrective action request or discontinuing our certifications. If any of these actions were to occur, it could harm our reputation as well as our business, financial condition and operating results.</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We are subject to payment-related risks.</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We accept payments using a variety of methods, including credit card, customer invoicing, physical bank check and payment upon delivery. As we offer new payment options to our customers, we may be subject to additional regulations, compliance requirements and fraud risk. For certain payment methods, including credit and debit cards, we pay interchange and other fees, which may increase over time and raise our operating costs and lower profitability. We rely on third parties to provide payment processing services, including the processing of credit cards, debit cards or electronic checks, and it could disrupt our business if these companies become unwilling or unable to provide these services to us. We are also subject to payment card association operating rules, certification requirements and rules governing electronic funds transfers, which could change or be reinterpreted to make it difficult or impossible for us to comply. If we fail to comply with these rules or requirements, we may be subject to fines and higher transaction fees and lose our ability to accept credit and debit card payments from our customers, process electronic funds transfers, or facilitate other types of online payments, and our business and operating results could be adversely affected.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     23
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Risks Relating to Ownership of Our Common Stock</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our stock price has been and may continue to be volatile.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In the year ended December 31, 2019, our common stock traded as high as $130.60 and as low as $88.75. The market for our common stock may become less active, liquid or orderly, which could depress the trading price of our common stock. Some of the factors, many of which are outside of our control, that may cause the market price of our common stock to fluctuate include:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">fluctuations in our financial condition and operating results;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">our ability to retain and attract customers and increase net sales;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">pricing pressures due to competition or otherwise and changes in gross margins;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in general economic and market conditions, economic uncertainty and changes in product development activity levels;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">announcements by us or our competitors of technological innovations or new product or product lines&#xa0;offerings or significant acquisitions;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">timing, effectiveness, and costs of expansion and upgrades of our offerings, systems and infrastructure;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in key personnel;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">success in entry into new markets and expansion efforts;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the public&#x2019;s response to press releases or other public announcements by us or third parties, including our filings with the Securities and Exchange Commission&#xa0;and announcements relating to litigation;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the projections we may provide to the public, any changes in these projections or our failure to meet these projections;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the issuance of new or updated research or reports by any securities or industry analysts who follow our common stock, changes in analysts&#x2019; financial estimates or ratings, and failure of securities analysts to initiate or maintain coverage of our common stock;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in the market valuations of similar companies;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">significant lawsuits, including patent or shareholder litigation;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in laws or regulations applicable to us;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">changes in accounting principles;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the sustainability of an active trading market for our common stock;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">future sales of our common stock by us or our shareholders, including sales by our officers, directors and significant shareholders;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">share price and volume fluctuations attributable to inconsistent trading levels of our shares; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">other events or factors, including those resulting from war, acts of terrorism, natural disasters or responses to these events.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In addition, the stock markets have experienced extreme price and volume fluctuations that have affected and continue to affect the market prices of equity securities of many companies. In the past, shareholders have instituted securities class action litigation following periods of market volatility. If we were to become involved in securities litigation, we could incur substantial costs and our resources and the attention of management could be diverted from our business.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     24
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>If securities or industry analysts publish inaccurate or unfavorable research or reports about our business, our stock price and trading volume could decline.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The trading market for our common stock depends, in part, on the research and reports that securities or industry analysts publish about us or our business. We do not have any control over these analysts. If one or more of the analysts who covers us downgrades our common stock, changes their opinion of our shares or publishes inaccurate or unfavorable research about our business, our stock price would likely decline. If one or more of these analysts ceases coverage of us or fails to publish reports on us regularly, demand for our common stock could decrease and we could lose visibility in the financial markets, which could cause our stock price and trading volume to decline.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Our failure to maintain proper and effective internal controls over financial reporting and otherwise comply with Section&#xa0;404 of the Sarbanes-Oxley Act or prevent or detect misstatements in our financial statements in the future could harm our business and cause a decrease in our stock price.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Ensuring that we have internal financial and accounting controls and procedures adequate to produce accurate financial statements on a timely basis is a costly and time-consuming effort that needs to be re-evaluated frequently. The Sarbanes-Oxley Act requires, among other things, that we maintain effective internal control over financial reporting and disclosure controls and procedures. In particular, we are required to perform annual system and process evaluation and testing of our internal control over financial reporting to allow management and our independent registered public accounting firm to report on the effectiveness of our internal control over financial reporting, as required by Section 404 of the Sarbanes-Oxley Act. If we are not able to comply with the requirements of Section 404 in the future, or if we fail to prevent or detect misstatements in the financial statements we include in our reports filed with the SEC, our business could be harmed and the market price of our common stock could decline.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Anti-takeover provisions in our charter documents and Minnesota law might discourage or delay acquisition attempts for us that you might consider favorable.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our Third Amended and Restated Articles of Incorporation, as amended, and Amended and Restated By-Laws contain provisions that may make the acquisition of our company more difficult without the approval of our board of directors. These provisions:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">permit our board of directors to issue up to 10,000,000 shares of preferred stock, with any rights, preferences and privileges as our board may designate, including the right to approve an acquisition or other change in our control;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">provide that the authorized number of directors may be changed by resolution of the board of directors;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">provide that all vacancies, including newly created directorships, may, except as otherwise required by law, be filled by the affirmative vote of a majority of directors then in office, even if less than a quorum;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">provide that shareholders seeking to present proposals before a meeting of shareholders or to nominate candidates for election as directors at a meeting of shareholders must provide notice in writing in a timely manner, and also specify requirements as to the form and content of a shareholder&#x2019;s notice; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">do not provide for cumulative voting rights.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are subject to the provisions of Section&#xa0;302A.673 of the Minnesota Statutes, which regulates business combinations. Section&#xa0;302A.673 generally prohibits any business combination by an issuing public corporation, or any of its subsidiaries, with an interested shareholder, which means any shareholder that purchases 10% or more of the corporation&#x2019;s voting shares within four years following the date the person became an interested shareholder, unless the business combination is approved by a committee composed solely of one or more disinterested members of the corporation&#x2019;s board of directors before the date the person became an interested shareholder.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">These anti-takeover provisions could discourage, delay or prevent a transaction involving a change in control of our company, even if doing so would benefit our shareholders. These provisions could also discourage proxy contests and make it more difficult for you and other shareholders to elect directors of your choosing and to cause us to take other corporate actions you desire.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>We do not expect to pay any cash dividends for the foreseeable future.</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have never declared or paid any cash dividends on our common stock, and we do not anticipate that we will pay any such cash dividends for the foreseeable future. We anticipate that we will retain all of our future earnings for use in the business and for general corporate purposes. Any determination to pay dividends in the future will be at the discretion of our board of directors and will depend upon results of operations, financial condition, contractual restrictions, restrictions imposed by applicable law and other factors our board of directors deems relevant.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     25
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item1b_unresolvedstaffcomments" title="item1b_unresolvedstaffcomments" href="#"></a>Item&#xa0;1B. Unresolved Staff Comments</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">None.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item2_properties" title="item2_properties" href="#"></a>Item&#xa0;2. Properties</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe that our facilities are well maintained and of sufficient capacity to support our current operations. We have facilities in the following regions:</p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>United States</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our corporate headquarters are located in Maple Plain, Minnesota in a facility we own encompassing approximately 95,000 square feet of office space. We also own a nearby facility encompassing approximately 35,000 square feet of manufacturing space. We own a facility in Rosemount, Minnesota that encompasses approximately 130,000 square feet of manufacturing and office space. We also own a facility in Plymouth, Minnesota that encompasses approximately 170,000 square feet of manufacturing and office space. In 2018, we purchased a facility in Brooklyn Park, Minnesota that encompasses approximately 215,000 square feet of manufacturing and office space.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We own a facility in Cary, North Carolina that encompasses approximately 77,000 square feet of manufacturing and office space.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In November 2017, we purchased RAPID and assumed the leases of three facilities in Nashua, New Hampshire. The three facilities we lease total approximately 146,000 square feet of manufacturing and office space. The leases expire at various times from 2020 to 2022.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Europe</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our European operations are headquartered in Telford, United Kingdom in a facility we own encompassing approximately 178,000 square feet of office and manufacturing space.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We also lease office space in the United Kingdom; Mosbach, Germany; Le Bourget du Lac, France; Novara, Italy and Nacka, Sweden, for sales, customer service and technical support staff. The leases expire at various times from 2021 to 2025. In October 2015, we purchased Alphaform, headquartered in Feldkirchen (Munich), Germany. As a result of the acquisition, we lease manufacturing and office facilities encompassing approximately 60,000 square feet in Feldkirchen, Germany and approximately 22,000 square feet in Eschenlohe, Germany. The leases expire at various times from 2021 to 2028.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Japan</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our Japan operations are headquartered in Zama, Kanagawa, Japan (southwest of Tokyo). In 2016, we moved into a new leased facility encompassing approximately 96,000 square feet of office and manufacturing space. The lease expires in April 2023.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><b>&#xa0;</b></p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     26
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item3_legalproceedings" title="item3_legalproceedings" href="#"></a>Item&#xa0;3. Legal Proceedings</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">From time to time, we are subject to various legal proceedings and claims that arise in the ordinary course of our business activities. Although the results of litigation and claims cannot be predicted with certainty, as of the date of this Annual Report on Form 10-K, we do not believe we are party to any litigation the outcome of which, if determined adversely to us, would individually or in the aggregate be reasonably expected to have a material adverse effect on our business.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item4_minesafetydis" title="item4_minesafetydis" href="#"></a>Item&#xa0;4. Mine Safety Disclosures</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Not applicable.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     27
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><a id="part2" title="part2" href="#"></a>PART II</b></p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item5_marketforrestrantscommonequity" title="item5_marketforrestrantscommonequity" href="#"></a>Item&#xa0;5. Market for Registrant&#x2019;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our common stock has traded on the New York Stock Exchange (NYSE) under the symbol &#x201c;PRLB&#x201d; since February&#xa0;24, 2012. Prior to that date, there was no public market for our common stock.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As of February 14, 2020, we had 10 holders of record of our common stock. The actual number of shareholders is greater than this number of record holders, and includes shareholders who are beneficial owners, but whose shares are held in street name by brokers and other nominees.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have never declared or paid any cash dividends on our capital stock and we do not intend to pay cash dividends on our common stock for the foreseeable future. Any future determination related to our dividend policy will be made at the discretion of our board of directors and will depend on then-existing conditions, including our financial condition, operating results, contractual restrictions, capital requirements, business prospects and other factors our board of directors may deem relevant.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Outstanding Equity Awards</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following table summarizes, as of December&#xa0;31, 2019, information about shares of our common stock that may be issued under equity compensation plans approved by shareholders and plans not approved by shareholders:</p>
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"><b>Plan Category</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Number of shares to be issued upon exercise of outstanding options, warrants and rights</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Weighted-average exercise price of outstanding options, warrants and rights</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Number of shares remaining available for future issuance under equity compensation plans (excluding shares in first column)</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 33%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 20%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 20%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 20%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Equity compensation plans approved by shareholders(1)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;">656,011</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;">$72.38</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;">6,160,817(2)</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Equity compensation plans not approved by shareholders</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">None</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;">N/A</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">None</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt; border-top: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td style="border-top: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Includes the 2000 Stock Option Plan, the 2012 Long-Term Incentive Plan and our Employee Stock Purchase Plan.</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">Includes 1,168,830&#xa0;shares remaining available for issuance as of December 31, 2019 under our Employee Stock Purchase Plan.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     28
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Performance Graph</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">The following graph shows a comparison from December 31, 2014 through December 31, 2019 of the cumulative total return for our common stock, the S&amp;P 500 Index and the Russell 2000 Index. We have selected the Russell 2000 Index because the Russell 2000 Index measures the performance of the small market capitalization segment of U.S. equity instruments and we are a member company included in the Russell 2000 Index. Such returns are based on historical results and are not intended to suggest future performance. Data for the S&amp;P 500 Index and the Russell 2000 Index assume reinvestment of dividends.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;"><img alt="" src="protograph.jpg" />&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 12%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Index</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/14</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">06/30/15</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/15</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">06/30/16</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/16</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">06/30/17</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/17</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">06/30/18</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/18</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">06/30/19</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">12/31/19</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs, Inc.</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.48</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">94.83</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">85.71</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">76.46</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.13</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">153.37</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">177.11</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">167.94</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">172.75</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">151.21</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">S&amp;P 500</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.20</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">99.27</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">101.94</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">108.74</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">117.70</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">129.86</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">132.03</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">121.76</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">142.88</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">156.92</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Russell 2000</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">104.09</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">94.29</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">95.62</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">112.65</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">117.49</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">127.46</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">136.39</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">111.94</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">130.04</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">138.50</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     29
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Unregistered Sales of Equity Securities and Issuer Purchases of Equity Securities</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">On May 15, 2019 the Board of Directors authorized the repurchase of shares of the Company&#x2019;s common stock from time to time on the open market or in privately negotiated purchases, at an aggregate purchase price of up to $100 million. The timing and amount of any share repurchases will be determined by our management based on market conditions and other factors. The term of the program runs through December 31, 2023.&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 18pt; font-size: 10pt;">The Company had no repurchases in the fourth quarter of 2019. During the year ended December 31, 2019, we repurchased 326,462 shares at an average price of $102.65 per share for an aggregate purchase price of $33.5 million. We have $49.9&#xa0;million remaining under this authorization.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item6_selectedfinancialdata" title="item6_selectedfinancialdata" href="#"></a>Item&#xa0;6. Selected Financial Data</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following tables set forth selected consolidated financial data for the periods and at the dates indicated. The selected consolidated statements of comprehensive income data for the years ended December&#xa0;31, 2019, 2018 and 2017 and selected consolidated balance sheets data as of December&#xa0;31, 2019 and 2018 are derived from our audited consolidated financial statements included in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; of this Annual Report on Form 10-K. The selected consolidated statements of comprehensive income data for the years ended December&#xa0;31, 2016 and 2015 and selected consolidated balance sheet data as of December&#xa0;31, 2017, 2016 and 2015 are derived from our audited consolidated financial statements not included in this report.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     30
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;The historical results presented below are not necessarily indicative of the results to be expected for any future period. You should read this selected consolidated financial data in conjunction with Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations,&#x201d; and the consolidated financial statements and related notes appearing in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; of this Annual Report on Form 10-K.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2015</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Consolidated Statements of Comprehensive Income Data</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">458,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">445,596</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">344,490</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">298,055</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">264,106</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">223,438</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">206,917</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">150,648</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">131,118</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">109,703</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">235,290</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">238,679</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">193,842</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">166,937</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">154,403</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,976</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,533</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">56,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">46,131</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">39,188</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">32,692</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">28,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">23,560</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">22,388</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,350</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,766</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,513</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">41,200</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">36,651</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">29,716</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">155,434</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">149,781</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">121,616</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">105,170</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">87,254</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">79,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">88,898</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,226</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">61,767</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">67,149</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other income, net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,337</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,757</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,209</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,454</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">712</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,193</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">91,655</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">74,435</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">64,221</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">67,861</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">17,538</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,067</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">22,657</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">21,514</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">21,347</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">63,655</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">76,588</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">51,778</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">42,707</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">46,514</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share(1)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.37</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.84</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.94</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.62</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.79</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.35</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.81</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.93</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.61</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.77</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted average shares outstanding(1)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,866,985</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,982,614</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,647,610</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,365,173</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,005,858</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,049,423</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,278,816</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,845,071</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,564,639</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,320,284</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Other comprehensive income (loss) (net of tax)</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign currency translation adjustments</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,474</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(3,258</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,519</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(5,541</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(2,283</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Comprehensive income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">65,129</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">73,330</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">57,297</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">37,166</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">44,231</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <hr />
  <table cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;">
   <tbody>
    <tr style="font-size: 10pt; vertical-align: top;">
     <td style="width: 1%; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1) </sup></p> </td>
     <td style="width: 99%; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">See Note 3 of notes to Consolidated Financial Statements for an explanation of the method used to calculate net income per basic and diluted share attributable to common shareholders and weighted average shares outstanding of the years ended December 31, 2019, 2018, and 2017 respectively.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">Stock-based compensation expense included in the statements of comprehensive income data above is as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2015</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Stock options and grants</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,591</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,113</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,954</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">6,177</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">5,580</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Employee stock purchase plan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,190</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">815</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">604</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">598</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">502</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,775</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,082</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,056</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,543</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">970</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">691</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">513</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,632</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,942</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,429</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">977</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,074</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,851</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,517</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,091</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,396</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,285</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,242</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,926</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,068</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,711</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,210</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,775</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,082</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <p style="margin: 0pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2015</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Consolidated Balance Sheets Data</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">125,225</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">85,046</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">36,707</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,795</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">47,653</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Working capital</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">188,838</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">162,628</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">121,249</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">134,357</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">111,740</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total assets</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">673,667</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">618,985</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">518,738</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">414,241</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">361,036</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total liabilities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">87,877</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">77,488</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">57,523</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">34,408</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">33,391</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total shareholders' equity</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">585,790</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">541,497</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">461,215</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">379,833</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">327,645</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     31
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item7_mdaa" title="item7_mdaa" href="#"></a>Item&#xa0;7. Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>The following discussion and analysis of our financial condition and results of operations should be read in conjunction with the consolidated financial statements and related notes included elsewhere in this Annual Report on Form 10-K. This discussion and analysis contains forward-looking statements that involve risks and uncertainties. Our actual results may differ materially from those anticipated in these forward- looking statements as a result of various factors, including those set forth under &#x201c;Risk Factors&#x201d; and elsewhere in this Annual Report on Form 10-K.</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Overview</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We are an e-commerce driven digital manufacturer of quick-turn, on-demand injection-molded, CNC-machined, 3D-printed and sheet metal-fabricated custom parts for prototyping and short-run production. We provide&#xa0;custom parts&#xa0;to product developers and engineers worldwide, who are under increasing pressure to bring their finished products to market faster than their competition. We believe custom parts manufacturing has historically been an underserved market due to the inefficiencies inherent in the quotation, equipment set-up and non-recurring engineering processes required to produce custom parts. Our proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and our customers conduct nearly all of their business with us over the Internet. We target our product lines to the millions of product developers and engineers who use 3D CAD software to design products across a diverse range of end markets. Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have experienced significant growth since our inception. Since we first introduced our Injection Molding product line in 1999, we have steadily expanded the size and geometric complexity of the injection-molded parts we are able to manufacture, and we continue to extend the diversity of materials we are able to support. Similarly, since first introducing our CNC Machining product line in 2007, we have expanded the range of part sizes, design geometries and materials we can support. In 2014, we acquired FineLine Prototyping, Inc. (FineLine) to expand the number of process types we offer to include stereolithography (SL), selective laser sintering (SLS) and direct metal laser sintering (DMLS). In 2017, we acquired RAPID to expand the number of process types we offer to include sheet metal&#xa0;fabrication and expand our CNC machining capability. In 2019, we added Carbon DLS to our 3D printing processes, introduced precision color matching on Injection Molding parts and launched production capabilities for metal 3D printing. We also continually seek to enhance other aspects of our technology and manufacturing processes, including our interactive web-based and automated user interface and quoting system. We intend to continue to invest significantly to enhance our technology and manufacturing processes and expand the range of our existing capabilities with the aim of meeting the needs of a broader set of customers. As a result of the factors described above, many of our customers tend to return to Proto Labs to meet their ongoing needs, with approximately 92%, 91% and 89% of our revenue in 2019, 2018 and 2017, respectively, derived from existing customers.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have established our operations in the United States, Europe and Japan, which we believe are three of the largest geographic markets where product developers and engineers are located. We entered the European market in 2005, launched operations in Japan in late 2009. Our operations were further expanded in Europe through our acquisition of Alphaform in 2015 and the United States through our acquisition of RAPID in November 2017. As of December 31, 2019, we had sold products into approximately 60 countries. Our revenue outside of the United States accounted for approximately 22%, 21% and 24% of our consolidated revenue in the years ended December 31, 2019, 2018 and 2017, respectively. We intend to continue to expand our international sales efforts and believe opportunities exist to serve the needs of product developers and engineers in select new geographic regions.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have grown our total revenue from $264.1 million in 2015 to $458.7 million in 2019. During this period, our operating expenses increased from $87.3 million in 2015 to $155.4 million in 2019. We have grown our income from operations from $67.1 million in 2015 to $79.9 million in 2019. Our recent growth in revenue and income from operations has been accompanied by increased cost of revenues and operating expenses. We expect to increase investment in our operations to support anticipated future growth as discussed more fully below.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In addition, we believe that a number of trends affecting our industry have affected our results of operations and may continue to do so. For example, we believe that many of our target product developer and engineer customers are facing three mega trends, which are disrupting long-term product growth models.&#xa0;We believe our customers are facing increased pressure to shorten product life-cycles, to&#xa0;embed products with connectivity driven by the internet of things technology, and to&#xa0;deliver products&#xa0;that are&#xa0;personalized and customized to unique customer specifications. We believe we continue to be well positioned to benefit from these trends, given our proprietary technology that enables us to automate and integrate the majority of activities involved in procuring custom parts. While our business may be positively affected by these trends, our results may also be favorably or unfavorably impacted by other trends that affect product developer and engineer orders for custom parts in low volumes, including, among others, economic conditions, changes in product developer and engineer preferences or needs, developments in our industry and among our competitors, and developments in our customers' industries. For a more complete discussion of the risks facing our business, see Part I, Item 1A. &#x201c;Risk Factors&#x201d; of this Annual Report on Form 10-K.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     32
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Key Financial Measures and Trends</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Revenue</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our operations are comprised of three geographic operating segments in the United States, Europe and Japan. Revenue is derived from our Injection Molding, CNC Machining, 3D Printing and Sheet Metal product lines. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined custom parts. 3D Printing revenue consists of sales of custom 3D-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal custom parts. Our revenue is generated from a diverse customer base, with no single customer company representing more than 2% of our total revenue in 2019. Our historical and current efforts to increase revenue have been directed at gaining new customers and selling to our existing customer base by increasing marketing and selling activities, including:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the introduction of our 3D Printing product line through our acquisition of FineLine in 2014;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">expanding&#xa0;3D printing to Europe&#xa0;through our acquisition of Alphaform in October 2015;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the introduction of our Sheet Metal product line through our acquisition of RAPID in 2017;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">continuously improving the usability of our product lines such as our web-centric applications; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">expanding the breadth and scope of our products by adding more sizes and materials to our offerings.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During 2019, we served 47,774 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 3.9% over the same period in 2018.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During 2018, we served&#xa0;45,968 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 22.5% over the same period in 2017.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During 2017, we served 37,538 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 19.3% over the same period in 2016.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 32.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Cost of Revenue, Gross Profit and Gross Margin</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cost of revenue consists primarily of raw materials, equipment depreciation, employee compensation including benefits and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts. We expect our personnel-related costs to increase in order to retain and attract top talent and remain competitive in the market. Overall, we expect cost of revenue to increase in absolute dollars, but remain relatively constant as a percentage of total revenue.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our business model requires that we invest in our capacity well in advance of demand to ensure we can fulfill the expectations for quick delivery of our products to our customers.&#xa0;Therefore, during each of 2019, 2018 and 2017 we made significant investments in additional factory space, equipment,&#xa0;and infrastructure in the United States. We also made significant investments&#xa0;in infrastructure in Europe in 2017 and&#xa0;significant investments in additional factory space in Japan in 2019 and 2016.&#xa0;We expect to continue to grow in future periods, which will result in the need for additional investments in factory space and equipment.&#xa0;We expect that these additional costs for factory and equipment expansion can be absorbed by revenue growth, and allow gross margins by product line&#xa0;to remain relatively consistent over time.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We define gross profit as our revenue less our cost of revenue, and we define gross margin as gross profit expressed as a percentage of revenue. Our gross profit and gross margin are affected by many factors, including our mix of revenue by product line,&#xa0;pricing, sales volume, manufacturing costs, the costs associated with increasing production capacity, the mix between domestic and foreign revenue sources and foreign exchange rates.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     33
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Operating Expenses</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Operating expenses consist of marketing and sales, research and development and general and administrative expenses. Personnel-related costs are the most significant component in each of these categories.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our recent growth in operating expenses is mainly due to higher headcounts to support our growth and expansion, and we expect that trend to continue. Our business strategy is to continue to be a leading online and technology-enabled manufacturer of quick-turn, on-demand injection-molded, CNC-machined, CNC-turned, 3D-printed and sheet metal custom parts for prototyping and low-volume production. In order to achieve our goals, we anticipate continued substantial investments in technology and personnel, resulting in increased operating expenses.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Marketing and sales.</i> Marketing and sales expense consists primarily of employee compensation, benefits, commissions, stock-based compensation, marketing programs such as electronic, print and pay-per-click advertising, trade shows and other related overhead. We expect sales and marketing expense to increase in the future as we increase the number of marketing and sales professionals and marketing programs targeted to increase our customer base and grow revenue.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Research and development.</i> Research and development expense consists primarily of personnel and outside service costs related to the development of new processes and product lines, enhancement of existing product lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under Accounting Standards Codification (ASC) 350-40<i>, Intangibles &#x2014; Goodwill and Other, Internal-Use Software</i>. We expect research and development expense to increase in the future as we seek to enhance our e-commerce interface technology, internal software and supporting business systems, and continue to expand our product lines.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>General and administrative.</i> General and administrative expense consists primarily of employee compensation, benefits, stock-based compensation, professional service fees related to accounting, tax and legal and other related overhead. We expect general and administrative expense to increase in the future as we continue to grow and expand as a global organization.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Other Income, Net</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Other income, net primarily consists of foreign currency-related gains and losses and interest income on cash balances and investments. Our foreign currency-related gains and losses will vary depending upon movements in underlying exchange rates. Our interest income will vary each reporting period depending on our average cash balances during the period, composition of our marketable security portfolio and the current level of interest rates.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Provision for Income Taxes</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Provision for income taxes is comprised of federal, state, local and foreign taxes based on pre-tax income. On December 22, 2017, the Tax Cuts and Jobs Act was signed into law in the United States. As a result, many provisions will affect our tax rate in future years. Some provisions, such as the reduction to the U.S. corporate tax rate from 35% to 21%, which began in 2018, reduced our effective tax rate in 2018 and subsequent years. Overall, our effective tax rate for 2018 and beyond will remain consistent based on the current tax laws.</p>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     34
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><b>Results of Operations</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following table summarizes our results of operations and the related changes for the periods indicated. The results below are not necessarily indicative of the results for future periods.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-right: 0pt; margin-left: 0pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>December 31,</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>December 31,</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 8%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">458,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">445,596</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">13,132</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">2.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">445,596</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">344,490</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">101,106</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">29.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">223,438</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">48.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">206,917</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">46.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">16,521</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">8.0</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">206,917</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">46.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">150,648</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">43.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">56,269</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">37.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">235,290</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">51.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">238,679</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">53.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(3,389</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(1.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">238,679</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">53.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">193,842</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">56.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">44,837</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">23.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,976</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,533</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">4,443</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,533</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">56,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">16.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">11,677</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">32,692</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">7.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">28,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">3,957</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.8</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">28,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">23,560</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.8</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">5,175</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">22.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,766</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">10.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,513</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(2,747</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(5.2</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,513</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">41,200</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12.0</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11,313</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">27.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">155,434</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">149,781</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,653</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">149,781</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">121,616</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">35.3</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">28,165</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">23.2</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">79,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">88,898</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(9,042</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">88,898</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,226</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">21.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,672</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">23.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other income, net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,337</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.3</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,757</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(1,420</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(51.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,757</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,209</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">548</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">24.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,193</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">91,655</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10,462</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(11.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">91,655</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">74,435</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">21.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,220</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">23.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">17,538</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,067</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,471</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">16.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,067</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">22,657</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">6.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(7,590</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(33.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">63,655</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">76,588</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">17.2</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(12,933</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(16.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">76,588</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">17.2</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">51,778</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">24,810</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">47.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Stock-based compensation expense included in the statements of comprehensive income data above is as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 49%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Stock options and grants</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,591</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,113</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,954</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Employee stock purchase plan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,190</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">815</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">604</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,056</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,543</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">970</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,632</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,942</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,429</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,851</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,517</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,091</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,242</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,926</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,068</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i style="font-size: 10pt;"><b>Comparison of Years Ended December&#xa0;31, 201</b></i><i style="font-size: 10pt;"><b>9</b></i><i style="font-size: 10pt;"><b> and 201</b></i><i style="font-size: 10pt;"><b>8</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Revenue</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Revenue by reportable segment and the related changes for 2019 and 2018 is summarized as follows:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">360,205</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">78.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">350,535</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">78.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,670</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2.8</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">82,805</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">80,889</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,916</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,718</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">14,172</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.1</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,546</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">10.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">458,728</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">445,596</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13,132</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue increased $13.1 million, or 2.9%, for 2019 compared with 2018. By reportable segment, revenue in the United States increased $9.7 million, or 2.8%, for 2019 compared with 2018. Revenue in Europe increased $1.9 million, or 2.4%, for 2019 compared with 2018. Revenue in Japan increased $1.5 million, or 10.9%, for 2019 compared with 2018.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     35
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue growth in 2019 was&#xa0;primarily driven by an increased volume of the product developers and engineers we served. During 2019, we served 47,774 unique product developers and engineers, an increase of 3.9% over 2018. Our growth in product developers and engineers served increased at a greater rate than our revenue growth, resulting in a decrease of 1.0% in the average revenue per product developer and engineer during 2019 as compared to 2018. The decrease in average spend per product developer and engineer was driven by a change in the mix of products, with 3D Printing and CNC Machining generally producing lower average order revenue than our other products.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue increases were primarily driven by increases in sales personnel and marketing activities. Our sales personnel focus on gaining new customer accounts and expanding the depth and breadth of existing customer accounts. Our marketing personnel focus on marketing activities that have proven to generate&#xa0;the greatest number of customer leads to support sales activity. International revenue was negatively impacted by $4.2 million in 2019&#xa0;compared to 2018&#xa0;as a result of foreign currency movements, primarily the weakening of the Euro relative to the&#xa0;United States dollar.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Revenue by product line and the related changes for 2019 and 2018 is summarized as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 37%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Injection Molding</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">217,415</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">47.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">210,523</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">47.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">6,892</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">3.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">CNC Machining</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">155,473</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">33.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">153,521</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">34.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,952</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">3D Printing</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">61,352</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">53,342</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">12.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,010</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Sheet Metal</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,000</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">4.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">24,998</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">5.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(3,998</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(16.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,488</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,212</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">276</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">8.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">458,728</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">445,596</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13,132</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">By product line, our revenue growth was driven by a 3.3% increase in Injection Molding revenue, a 1.3% increase in CNC Machining revenue, a 15.0% increase in 3D Printing revenue, as well as a $0.3 million increase in Other Revenue, which was partially offset by a 16.0% decrease in Sheet Metal revenue, in each case for 2019 compared with 2018. The decrease in Sheet Metal revenue was driven by a decision to move away from certain business which was not scalable and did not fit into the envelope of our revised Sheet Metal product offerings.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cost of Revenue, Gross Profit and Gross Margin</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Cost of Revenue.</i> Cost of revenue increased $16.5 million, or 8.0%, for 2019 compared to 2018, which was faster than the rate of revenue increase of 2.9% for 2019 compared to 2018. The increase in cost of revenue resulted from the growth of the business and investments to support future growth. Specifically, the increases were driven by raw material and production cost increases of $2.6 million, an increase in direct labor headcount and wage inflation resulting in personnel and related cost increases of $7.8 million and equipment and facility-related cost increases of $6.1 million to support increased sales volumes and future growth of the business.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Gross Profit and Gross Margin.</i> Gross profit decreased from $238.7 million in 2018 to $235.3 million in 2019 primarily due to an increase in expenses associated with the cost of revenue. Gross margin decreased from 53.6% of revenue in 2018 to 51.3% of revenue in 2019 due to investments in facilities and personnel to support future growth and the timing and mix of revenue, with the lower volumes in Sheet Metal and certain CNC operations related to the RAPID acquisition being the primary driver of the mix related impact.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Income from Operations</i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Income from operations decreased $9.0 million, or 10.2%, for 2019 compared with 2018. By reportable segment, income from operations for the United States and Europe decreased 6.1% and 10.0%, respectively, and Corporate Unallocated and Japan increased 0.6% for 2019 compared with 2018.</p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Operating Expenses</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Marketing and Sales.</i> Marketing and sales expense increased $4.4 million, or 6.5%, for 2019 compared to 2018 due to an increase in headcount resulting in personnel and related cost increases of $3.3 million and marketing program cost increases of $1.1 million. The increase in marketing program costs is the result of our focus on funding those programs that have proven to be the most effective in growing our business.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Research and Development.</i> Our research and development expense increased $4.0 million, or 13.8%, for 2019 compared to 2018 due to an increase in headcount resulting in personnel and related cost increases of $3.5 million, as well as an increase in administrative and depreciation cost increases of $0.5 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     36
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>General and Administrative.</i> Our general and administrative expense decreased $2.7 million, or 5.2%, for 2019 compared to 2018 due to stock- based compensation cost decreases of $1.7 million driven by lower performance-related compensation, amortization cost decreases of $1.0 million driven by allocations to other expense categories to appropriately reflect the nature of our intangible assets and professional service decreases of $0.4 million, which were partially offset by administrative cost increases of $0.4 million.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Other Income, Net and Provision for Income Taxes</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 9pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Other Income, Net.</i> We recognized other income, net of $1.3 million in 2019, a decrease of $1.5 million compared to other income, net of $2.8 million for 2018. Other income, net for 2019 primarily consisted of $2.1 million in interest income on investments, which was partially offset by a $0.8 million loss on foreign currency. Other income, net for 2018 primarily consisted of $1.7 million in interest income on investments, a $0.7 million gain on our sale of RAPID Wire &amp; Cable, LLC and a $0.4 million gain on foreign currency.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Provision for Income Taxes.</i> Our income tax provision increased by $2.4 million for 2019 compared to 2018. The increase in the provision is primarily due to a decrease in tax benefits from the vesting of restricted stock and exercise of stock options. This increase was coupled with an increase in the state tax provision and an increase in valuation allowances. Our effective tax rate of 21.6% for 2019 increased 5.2% compared to 16.4% for the same period in 2018.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Comparison of Years Ended December&#xa0;31, 201</b></i><i><b>8</b></i><i><b> and 201</b></i><i><b>7</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Revenue</i></p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;Revenue by reportable segment and the related changes for 2018 and 2017 is summarized as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0); width: 37%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 13%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 13%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 13%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
    </tr>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>$</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt; width: 1%;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
     <td style="width: 9%;">&#xa0;</td>
     <td style="width: 1%;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt; width: 9%;">&#xa0;</td>
     <td style="font-size: 10pt; width: 1%;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">350,535</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">78.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">263,086</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">76.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">87,449</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">33.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">80,889</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">70,154</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14,172</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3.1</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,250</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3.2</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,922</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">26.0</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt; width: 28%;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">101,106</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">29.3</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue increased $101.1 million, or 29.3%, for 2018 compared with 2017. By reportable segment, revenue in the United States increased $87.4 million, or 33.2%, for 2018 compared with 2017. Revenue growth in the United States was partially attributable to the acquisition of RAPID in November 2017. Revenue in Europe increased $10.7 million, or 15.3%, for 2018 compared with 2017. Revenue in Japan increased $2.9 million, or 26.0%, for 2018 compared with 2017.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue growth in 2018 was&#xa0;primarily driven by an increased volume of the product developers and engineers we served. During 2018, we served&#xa0;45,968 unique product developers and engineers, an increase of 22.5% over 2017. Average revenue per product developer or engineer increased 6% during 2018 as compared to 2017 due to changes in the mix of products purchased by our customers.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our revenue increases were primarily driven by increases in sales personnel and marketing activities. Our sales personnel focus on gaining new customer accounts and expanding the depth and breadth of existing customer accounts. Our marketing personnel focus on marketing activities that have proven to generate&#xa0;the greatest number of customer leads to support sales activity. International revenue increased by $3.5&#xa0;million in 2018&#xa0;compared to 2017&#xa0;as a result of foreign currency movements, primarily the strengthening of the Euro relative to the&#xa0;United States dollar.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     37
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Revenue by product line and the related changes for 2018 and 2017 is summarized as follows:</p>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" rowspan="1" style="text-align: center; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>$</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" rowspan="1" style="text-align: center; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>$</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" rowspan="1" style="text-align: center; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>$</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>%</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Injection Molding</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">210,523</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">47.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">194,432</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">56.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,091</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">8.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">CNC Machining</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">153,521</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">34.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">103,739</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">30.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">49,782</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">48.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">3D Printing</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">53,342</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">12.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">43,329</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">12.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,013</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">23.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Sheet Metal</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">24,998</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">5.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,767</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">0.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">23,231</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">*</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,212</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,223</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,989</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">*</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">445,596</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">344,490</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">101,106</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">29.3</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; font-size: 10pt;">* Percentage change not meaningful</p>
  <p style="margin: 0pt 22.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">By product line, our revenue growth was driven by an 8.3% increase in Injection Molding revenue, a 48.0% increase in CNC Machining revenue and a 23.1% increase in 3D Printing revenue, as well as a $23.2 million increase in Sheet Metal revenue and a $2.0 million increase in Other Revenue, in each case for 2018 compared with 2017. Our November 2017 acquisition of RAPID added the Sheet Metal product line, expanded our CNC Machining product line&#xa0;and contributed to Other Revenue.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cost of Revenue, Gross Profit and Gross Margin</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Cost of Revenue.</i> Cost of revenue increased $56.3 million, or 37.4%, for 2018 compared to 2017, which was faster than the rate of revenue increase of 29.3% for 2018 compared to 2017. The increase in cost of revenue resulted from the growth of the business, including via the RAPID acquisition, and was due to raw material and production cost increases of $16.6 million to support increased sales volumes, an increase in direct labor headcount resulting in personnel and related cost increases of $30.8 million and equipment and facility-related cost increases of $8.9 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Gross Profit and Gross Margin.</i> Gross profit increased from $193.8 million in 2017 to $238.7 million in 2018 primarily due to an increase in revenue. Gross margin decreased from 56.3% of revenue in 2017 to 53.6% of revenue in 2018 primarily due to the timing and mix of revenue, with the RAPID acquisition and CNC facility relocation in the United States being the primary drivers of the reduction in gross margin.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Income from Operations</i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Income from operations increased $16.7 million, or 23.1%, for 2018 compared with 2017. By reportable segment, income from operations for the United States, Europe and Corporate Unallocated and Japan increased 17.0%, 30.8% and 10.9%, respectively, as a percentage of revenue for 2018 compared with 2017.</p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Operating Expenses</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Marketing and Sales.</i> Marketing and sales expense increased $11.7 million, or 20.5%, for 2018 compared to 2017 due to an increase in headcount resulting in personnel and related cost increases of $10.0 million and marketing program cost increases of $1.7 million. The increase in marketing program costs is the result of our focus on funding those programs that have proven to be the most effective in growing our business.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Research and Development.</i> Our research and development expense increased $5.2 million, or 22.0%, for 2018 compared to 2017 due to an increase in headcount resulting in personnel and related cost increases of $4.9 million and professional services cost increases of $0.6 million, which were partially offset by a decrease in operating cost of $0.3 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>General and Administrative.</i> Our general and administrative expense increased $11.3 million, or 27.5%, for 2018 compared to 2017 due to an increase in headcount resulting in personnel and related cost increases of $2.4 million, stock- based compensation cost increases of $0.9 million, administrative cost increases of $5.3 million and amortization cost increases of $2.7 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Other Income, Net and Provision for Income Taxes</i></p>
  <p style="margin: 0pt 14.7pt; text-align: left; text-indent: 9pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Other Income, Net.</i> We recognized other income, net of $2.8 million in 2018, an increase of $0.6 million compared to other income, net of $2.2 million for 2017. Other income, net for 2018 primarily consisted of $1.7 million in interest income on investments, a $0.7 million gain on our sale of RAPID Wire &amp; Cable, LLC and a $0.4 million gain on foreign currency. Other income, net for 2017 primarily consisted of $1.5 million in interest income on investments, a $0.4 million favorable legal settlement and a $0.3 million gain on foreign currency.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     38
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"><i>Provision for Income Taxes.</i> Our income tax provision decreased by $7.6 million for 2018 compared to 2017. The decrease in the provision is primarily due to the Tax Cuts and Jobs Act that went into effect in 2018 and benefits from the vesting of restricted stock and the exercise of stock options.&#xa0;Our effective tax rate of 16.4% for 2018 decreased 14.0% compared to 30.4% for the same period in 2017.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Selected Quarterly Results of Operations Data</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following tables set forth selected unaudited quarterly results of operations data for 2019 and 2018. This unaudited quarterly information has been prepared on the same basis as our annual audited consolidated financial statements appearing elsewhere in this Annual Report on Form 10-K and includes all adjustments, consisting only of normal recurring adjustments, that we consider necessary to present fairly the financial information for the fiscal quarters presented. The quarterly data should be read in conjunction with our selected financial data and consolidated financial statements and the related notes appearing elsewhere in this Annual Report on Form 10-K. Operating results for any quarter are not necessarily indicative of results for a full-year period, and the historical results presented below are not necessarily indicative of the results to be expected in any future period.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="30" style="width: 57%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Three Months Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Dec. 31, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Sep. 30, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Jun. 30, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Mar. 31, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Dec. 31, 2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Sep. 30, 2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Jun. 30, 2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Mar. 31, 2018</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="30" style="width: 57%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">(unaudited)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Consolidated Statements of Comprehensive Income Data:</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">111,889</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">117,455</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">115,932</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">113,452</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">112,769</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">115,430</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">109,652</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">107,745</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">55,311</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">57,839</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">55,696</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">54,592</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">53,614</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">53,027</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">50,439</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,837</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">56,578</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,616</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">60,236</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">58,860</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,155</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">62,403</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,213</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">57,908</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,510</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,604</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,285</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,577</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,586</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,818</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,557</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,572</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,151</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,359</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,169</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,013</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,580</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,458</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,032</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">6,665</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11,355</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,380</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">13,209</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,822</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">13,834</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">13,096</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,640</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,943</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">37,016</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">38,343</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">40,663</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">39,412</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">39,000</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">37,372</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">37,229</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">36,180</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,562</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,273</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,573</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,448</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">20,155</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">25,031</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,984</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other income (expense), net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(229</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">228</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,125</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">213</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,381</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">390</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">808</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">178</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,333</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,501</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">20,698</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,661</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,536</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">25,421</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">22,792</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,906</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,147</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,709</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,532</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,150</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,250</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,484</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,478</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,855</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15,186</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,792</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,166</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15,511</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">19,286</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">20,937</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">18,314</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">18,051</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.57</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.63</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.60</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.58</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.71</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.77</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.68</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.67</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.56</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.62</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.60</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.57</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.71</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.77</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.67</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.66</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Shares used to compute net income per share:</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,777,536</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,846,030</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,875,153</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,963,366</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,040,207</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,038,585</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,972,990</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,879,388</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,945,927</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,005,341</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,041,422</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,177,039</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,311,988</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,337,886</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,274,882</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,197,099</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     39
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Liquidity and Capital Resources</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cash Flows</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The following table summarizes our cash flows for the years ended December&#xa0;31, 2019, 2018 and 2017:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: auto; margin-left: 27pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 49%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash provided by operating activities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">116,052</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">122,929</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,748</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash used in investing activities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(44,303</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(63,281</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(123,975</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash (used in) provided by financing activities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(31,617</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10,438</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,192</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of exchange rates on cash and cash equivalents</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">47</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(871</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">947</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net increase (decrease) in cash and cash equivalents</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">40,179</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">48,339</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(32,088</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Sources of Liquidity</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><i>&#xa0;</i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We finance our operations and capital expenditures through cash flow from operations. We had cash and cash equivalents of $125.2 million as of December 31, 2019, an increase of $40.2&#xa0;million from December 31, 2018. The increase in our cash was due primarily to cash generated through operations, partially offset by investing activity and repurchases of common stock. We had cash and cash equivalents of $85.0&#xa0;million as of December 31, 2018, an increase of $48.3 million from December 31, 2017. The increase in our cash was due primarily to cash generated through operations. We had cash and cash equivalents of $36.7 million as of December&#xa0;31, 2017, a decrease of $32.1 million from December&#xa0;31, 2016. The decrease in our cash was due primarily to the acquisition of RAPID in November 2017.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As of December 31, 2019, the amount of cash and cash equivalents held by foreign subsidiaries was $21.6&#xa0;million. Our intent is to continue to permanently reinvest these funds outside the U.S. and our current plans do not demonstrate a need to repatriate them to fund our domestic operations. We believe that our existing cash and cash equivalents together with cash generated from operations will be sufficient to meet our working capital expenditure requirements for at least the next 12 months.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cash Flows from Operating Activities</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash flow from operating activities of $116.1 million during 2019 primarily consisted of net income of $63.7 million, adjusted for certain non-cash items, including depreciation and amortization of $30.9 million, stock-based compensation expense of $10.8 million and deferred taxes of $6.1 million and changes in operating assets and liabilities and other items totaling $4.3 million. The cash flow from operating activities during 2019 compared to 2018 decreased $6.8 million due to decreases in net income of $12.9 million and deferred taxes of $5.8 million, which were partially offset by increases in depreciation and amortization of $4.1 million driven by an increase in capital investments and changes in operating assets and liabilities and other items of $7.8 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;Cash flow from operating activities of $122.9 million during 2018 primarily consisted of net income of $76.6 million, adjusted for certain non-cash items, including depreciation and amortization of $26.8 million, stock-based compensation expense of $10.9 million and deferred taxes of $11.9 million, which were partially offset by changes in operating assets and liabilities and other items totaling $3.3 million. The cash flow from operating activities during 2018 compared to 2017 increased $41.2 million due to increases in net income of $24.8 million, increases in stock-based compensation expense of $2.4 million driven by an increased level of equity grants to employees, increases in depreciation and amortization of $8.3 million driven by an increase in capital investments and increases in deferred taxes of $10.8 million. These increases were partially offset by changes in operating assets and liabilities and other items of $5.1 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash flow from operating activities of $81.8 million during 2017 primarily consisted of net income of $51.8 million, adjusted for certain non-cash items, including depreciation and amortization of $18.5 million, stock-based compensation expense of $8.6 million and changes in operating assets and liabilities and other items totaling $2.9 million. The cash flow from operating activities during 2017 compared to 2016 increased $4.2 million due to increases in net income of $9.0 million, increases in stock-based compensation expense of $1.8 million driven by an increased level of equity grants to employees and&#xa0;increases in depreciation and amortization of $1.0 million driven by an increase in capital investments. These increases were partially offset by decreases to deferred taxes of $1.6 million, amortization of held-to-maturity securities of $0.1 million and changes in operating assets and liabilities of $5.9 million.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     40
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cash Flows from Investing Activities</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash used in investing activities was $44.3 million for the year ended December 31, 2019, consisting of $62.2 million for the purchase of property, equipment and other capital assets, $46.4 million for the purchase of marketable securities and $4.0 in other investing activities, which were partially offset by $68.3 million in proceeds from maturities of marketable securities.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash used in investing activities was $63.3 million for the year ended December 31, 2018, consisting of $87.1 million for the purchase of property, equipment and other capital assets primarily to expand our production capacity and $41.4 million for the purchase of marketable securities, which were partially offset by $65.1 million in proceeds from maturities of marketable securities and $0.1 million in other investing activities.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash used in investing activities was $123.9 million for the year ended December 31, 2017, consisting of $110.5 million for the purchase of RAPID, $32.6 million for the purchase of property, equipment and other capital assets primarily to expand our production capacity, $20.0 million for the purchase of marketable securities and $8.8 million for the purchases of other assets and investments, which were partially offset by $48.0 million in proceeds from maturities and call redemption of marketable securities.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i>Cash Flows from Financing Activities</i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash used in financing activities was $31.6 million for the year ended December 31, 2019, consisting of $33.5 million in repurchases of common stock, and $2.5 million in purchases of shares withheld for tax obligations associated with equity transactions, partially offset by $4.4 million in proceeds from exercises of stock options.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash used in financing activities was $10.4 million for the year ended December 31, 2018, consisting of $12.2 million in repurchases of common stock, payments on short-term debt obligations of $5.0 million, and $2.1 million in purchases of shares withheld for tax obligations associated with equity transactions, partially offset by $8.9 million in proceeds from exercises of stock options.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Cash provided by financing activities was $9.2 million for the year ended December 31, 2017, consisting of $5.0 million in short-term debt obligations and $8.6 million in proceeds from the exercise of stock options, partially offset by $4.4 million for repurchases of common stock.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Operating and Capital Expenditure Requirements</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe, based on our current operating plan, that our cash balances and cash generated through operations and interest income will be sufficient to meet our anticipated cash requirements through at least the next 12 months. From time to time we may seek to sell equity or convertible debt securities or enter into credit facilities. The sale of equity and convertible debt securities may result in dilution to our shareholders. If we raise additional funds through the issuance of convertible debt securities or enter into credit facilities, these securities and debt holders could have rights senior to those of our common stock, and this debt could contain covenants that would restrict our operations. We may require additional capital beyond our currently forecasted amounts. Any such required additional capital may not be available on terms acceptable to us, or at all.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our future capital requirements will depend on many factors, including the following:</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the revenue growth in&#xa0;Injection Molding,&#xa0;CNC Machining, 3D Printing&#xa0;and Sheet Metal product lines;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">costs of operations, including costs relating to expansion and growth;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the emergence of competing or complementary technological developments;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the costs of filing, prosecuting, defending and enforcing any patent claims and other intellectual product rights, or participating in litigation-related activities; and</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p> </td>
    </tr>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#x2022;</p> </td>
     <td> <p style="margin: 0pt; text-align: left; font-size: 10pt;">the acquisition of businesses, products and technologies, although we currently have no commitments or agreements relating to any of these types of transactions.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our recent annual capital expenditures have varied between 10% and 20% of annual revenue. We believe future growth capital expenditures, excluding any expenditures for buildings and maintenance capital we might purchase for our operations, are likely to vary between approximately 8% and 12% of annual revenue.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     41
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Contractual Obligations</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As of December&#xa0;31, 2019, our contractual obligations and the effect such obligations are expected to have on our liquidity and cash flows in future periods were as follows:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Payment Due by Period</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 30%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Total</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Less than 1 Year</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>1-3 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>3-5 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>More than 5 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating leases</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,678</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,034</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">6,533</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,406</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">705</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">12,678</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">4,034</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,533</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1,406</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">705</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The table above reflects only payment obligations that are fixed and determinable. Our commitments for operating leases relate to three of our United States manufacturing facilities; our European sales, customer service and technical support offices;&#xa0;manufacturing and office facilities located in Germany; and our Japan facility.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Financing Arrangements</b></i></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">We had no financing arrangements as of December 31, 2019 and 2018.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b style="font-size: 10pt;">Inflation</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We experience normal inflation and changing prices, primarily on our production materials and labor. In 2019 and 2018, wage inflation contributed to our lower gross margin. In 2017, we do not believe inflation and changing prices had a material effect on our financial condition.&#xa0;</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Off-Balance Sheet Arrangements</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Since our inception, we have not engaged in any off-balance sheet arrangements, including the use of structured finance, special purpose entities or variable interest entities.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Critical Accounting Policies and Use of Estimates</b></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The discussion and analysis of our financial condition and results of operations is based upon our consolidated financial statements, which have been prepared in accordance with accounting principles generally accepted in the United States. The preparation of these financial statements requires us to make estimates, judgments and assumptions that affect the reported amount of assets, liabilities, revenue, expenses and related disclosures. On an ongoing basis, we evaluate our estimates, including those related to revenue recognition, goodwill, other intangible assets, stock-based compensation, and income taxes. We base our estimates of the carrying value of certain assets and liabilities on historical experience and on various other assumptions that we believe to be reasonable under the circumstances. In many cases, we could reasonably have used different accounting policies and estimates. In some cases, changes in the accounting estimates are reasonably likely to occur from period to period. Management has discussed the development, selection and disclosure of these estimates with the audit committee of our board of directors. Our actual results may differ significantly from these estimates under different assumptions or conditions.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We believe the following critical accounting policies affect our more significant judgments used in the preparation of our consolidated financial statements. See the Notes to Consolidated Financial Statements included in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; in this Annual Report on Form 10-K for additional information about these critical accounting policies, as well as a description of our other accounting policies.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     42
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Revenue Recognition</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">On January 1, 2018, we adopted&#xa0;ASC 606, <i>Revenue from Contracts with Customers,</i>&#xa0;using the modified retrospective approach. We manufacture custom parts to specific customer orders&#xa0;that have no alternative use to us, and we believe there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these two criteria, we will recognize revenue over time.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Prior to 2018, we recognized revenue in accordance with ASC 605,<i> Revenue Recognition</i>, which states that revenue is realized or realizable and earned when all of the following criteria are met: (1)&#xa0;persuasive evidence of an arrangement exists, (2)&#xa0;delivery has occurred or services have been rendered, (3)&#xa0;the price to the buyer is fixed or determinable, and (4)&#xa0;collectability is reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in our Injection Molding, CNC Machining, 3D Printing, Sheet Metal and Other product lines.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 32.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Goodwill</b></i></p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We recognize goodwill in accordance with ASC 350, <i>Intangibles&#x2014;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is not amortized. Goodwill is tested for impairment annually in the fourth quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount may be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. As of December 31, 2019 no impairment charges for goodwill have been recognized.</p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Other Intangible Assets</b></i></p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We recognize other intangibles assets in accordance with ASC 350, <i>Intangibles&#x2014;Goodwill and Other</i>. Other intangible assets include software technology, customer relationships and other intangible assets acquired from independent parties. Other intangible assets with a definite life are amortized over a period ranging from two to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) may not be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. As of December 31, 2019 no impairment charges for intangible assets have been recognized.</p>
  <p style="margin: 0pt 22.2pt 0pt 26.6pt; text-align: left; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Stock-Based Compensation</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We determine our stock-based compensation in accordance with ASC 718,<i> Compensation&#x2014;Stock Compensation </i>(ASC 718), which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on the grant date fair value of the award.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. We use the Black-Scholes option pricing model to value our stock option awards. Stock-based compensation expense is significant to our consolidated financial statements and is calculated using our best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include our expected term and&#xa0;stock price volatility. If different estimates and assumptions had been used, our common stock valuations could be significantly different and related stock-based compensation expense may be materially impacted.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The Black-Scholes option pricing model requires inputs such as the risk-free interest rate, expected term, expected volatility and expected dividend yield. We base the risk-free interest rate that we use in the Black-Scholes option pricing model on zero coupon U.S. Treasury instruments with maturities similar to the expected term of the award being valued. The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#xa0;our stock options are expected to be outstanding. We estimated the volatility of our stock price based on the historic volatility of our common stock. We have never paid and do not anticipate paying any cash dividends in the foreseeable future and, therefore, we use an expected dividend yield of zero in the option pricing model. We account for&#xa0;forfeitures as they occur.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     43
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The fair value of each new employee option awarded was estimated on the date of grant for the periods below using the Black-Scholes option pricing model with the following assumptions:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 18pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 52%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.35 - 2.58%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.24 - 2.36%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.25</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.25</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.50</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.68 - 44.68%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted average grant date fair value</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$47.84</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$50.08</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$32.26</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of our common stock during each offering period at a discount through payroll deductions of up to 15% of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period.&#xa0;At the end of each offering period, employees are able to purchase shares at 85% of the lower of the fair market value of our common stock on the first trading day of the offering period or on the last trading day of the offering period. We determine the fair value stock-based compensation related to our ESPP in accordance with ASC 718 using the component measurement approach and the Black-Scholes standard option pricing model.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">The fair value of each offering period was estimated using the Black-Scholes option pricing model with the following assumptions:</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 18pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 52%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">1.59 - 2.35%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.06 - 2.33%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0.97 - 1.48%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.63 - 53.57%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">31.50 - 37.36%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">24.49 - 34.51%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;There are significant differences among option valuation models, and this may result in a lack of comparability with other companies that use different models, methods and assumptions. If factors change and we employ different assumptions in the application of ASC 718 in future periods, or if we decide to use a different valuation model, such as a lattice model, the stock-based compensation expense that we record in the future under ASC 718 may differ significantly from what we have recorded using the Black-Scholes option pricing model and could materially affect our operating results.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We recognize stock-based compensation expense on a straight-line basis over the requisite service period. We recorded stock-based compensation expense relating to stock options, restricted stock awards, performance stock units and our ESPP&#xa0;of $10.8&#xa0;million, $10.9 million and $8.6 million during the years ended December&#xa0;31, 2019, 2018 and 2017, respectively. As of December&#xa0;31, 2019, we had $3.6&#xa0;million of unrecognized stock-based compensation costs related to unvested stock options that are expected to be recognized over a weighted average period of 2.6&#xa0;years. We issued options to purchase 53,708, 36,600 and 60,100 shares of our common stock in 2019, 2018 and 2017, respectively. As of December&#xa0;31, 2019, we had $21.1&#xa0;million of unrecognized stock-based compensation costs related to non-vested restricted stock, which is expected to be recognized over a weighted average period of 2.6&#xa0;years. We issued restricted stock awards of 115,471, 106,855 and 210,744 shares of our common stock in 2019, 2018 and 2017, respectively. As of December&#xa0;31, 2019, we had $0.1 million of&#xa0;unrecognized stock-based compensation costs related to non-vested performance stock, which is expected to be recognized over a weighted average period of 0.1 years. The decrease in unrecognized stock-based compensation costs related to non-vested performance stock in 2019 when compared to 2018 is driven by a decrease in the number of shares expected to vest at the end of future performance periods. We issued performance stock awards of 21,434, 20,006 and 25,707 shares of our common stock in 2019, 2018 and 2017, respectively.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In future periods, our stock-based compensation expense is expected to increase due to our existing unrecognized stock-based compensation and the issuance of additional stock-based awards to continue to attract and retain employees and non-employee directors.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Income Taxes</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We account for income taxes in accordance with ASC 740,<i> Income Taxes</i> (ASC 740). Under this method, we determine tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the current year&#x2019;s financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because we assume that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. We establish a valuation allowance for any portion of our deferred tax assets that we believe will not be recognized.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     44
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">ASC 740 also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by defining a criterion that an individual tax position must meet for any part of the benefit of that position to be recognized in an enterprise&#x2019;s financial statements. Additionally, ASC 740 provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition. Including interest and penalties, we have established a liability for uncertain tax positions of $5.4 million as of December&#xa0;31, 2019.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate increased by 5.2% for the year ended December 31,&#xa0;2019 when compared&#xa0;to 2018 primarily due to a decrease in tax benefits from the vesting of restricted stock and exercise of stock options, an increase in the state tax provision, and an increase to valuation allowances for unrealizable deferred tax assets.&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#xa0;was enacted on December 22, 2017. The Act reduced the&#xa0;U.S. federal corporate tax rate from 35% to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings.&#xa0; No additional income taxes have been provided for any remaining undistributed foreign earnings not subject to the transition tax or any additional outside basis difference inherent in these entities as these amounts continue to be indefinitely reinvested in foreign operations.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently adopted accounting pronouncements</b></i></p>
  <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the fourth quarter of 2019, we early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) 2017-04, <i>Intangibles &#x2013; Goodwill and Other, </i>which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had no material impact on our consolidated financial statements.</p>
  <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the first quarter of 2019, we adopted the FASB ASU 2016-02,&#xa0;<i>Leases&#xa0;</i>(ASC 842), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. We have adopted the new lease standard using the new transition option issued under the amendments in ASU 2018-11,&#xa0;<i>Leases</i>, which allowed us to continue to apply the legacy guidance in Accounting Standards Codification (ASC) 840,&#xa0;<i>Leases</i>, in the comparative periods presented in the year of adoption. We elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed us to carry forward the historical lease classification. We made an accounting policy election to keep leases with an initial term of 12 months or less off of the balance sheet. We will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to our operating lease assets and liabilities on January 1, 2019 of $13.1 million.</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the first quarter of 2018, we adopted the FASB ASU 2014-09, <i>Revenue from Contracts with Customers </i>(ASC 606). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. We adopted the new revenue standard using the modified retrospective approach. We manufacture custom parts to specific customer orders that have no alternative use to us, and we believe there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#xa0;manufactured parts that meet these two criteria, we will recognize revenue over time. The transition adjustment recorded was an increase of $1.5 million&#xa0;to our retained earnings balance&#xa0;as of&#xa0;January 1, 2018.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the first quarter of 2018, we adopted ASU 2017-09, <i>Compensation &#x2013; Stock Compensation</i>, which is intended to provide clarity and reduce diversity in practice&#xa0;as well as&#xa0;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did not have a material impact on our consolidated financial statements.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently issued accounting pronouncements</b></i></p>
  <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In December 2019, the FASB issued ASU 2019-12, <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after December 15, 2020 and interim periods within those fiscal years with early adoption permitted. We are&#xa0;evaluating the impact of future adoption of this guidance on our consolidated financial statements, but we do not expect the impact to be material.</p>
  <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In June 2016, the FASB issued ASU 2016-13, <i>Financial Instruments &#x2013; Credit Losses, </i>which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after December 15, 2019 and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will not have a material impact on our consolidated financial statements.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     45
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item7a_quantitativeandqualatativedis" title="item7a_quantitativeandqualatativedis" href="#"></a>Item&#xa0;7A. Quantitative and Qualitative Disclosures About Market Risk</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;"><b>&#xa0;</b></p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b>Quantitative and Qualitative Disclosure of Market Risks</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our exposure to market risk is confined to our cash and cash equivalent balances and investments. The primary goals of our investment policy are preservation of capital, fulfillment of liquidity needs and fiduciary control of cash and cash equivalent balances. We also seek to maximize income from our investments without assuming significant risk. To achieve our goals, we maintain a portfolio of debt securities with various maturities ranging from one to three years. Due to the nature of our investment portfolio, we are subject to interest rate risks, which we mitigate by holding our investments to maturity. In future periods, we will continue to evaluate our investment policy in order to continue our overall goals.</p>
  <p style="margin: 0pt 22.2pt 0pt 14.7pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><i><b>Foreign Currency Risk</b></i></p>
  <p style="margin: 0pt 22.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">As a result of our foreign operations, we have revenue, expenses, assets and liabilities that are denominated in foreign currencies. We generate revenue and incur production costs and operating expenses in British Pound, Euro and Japanese Yen.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">Our operating results and cash flows are adversely impacted when the United States dollar appreciates relative to other foreign currencies. Additionally, our operating results and cash flows are adversely impacted when the British Pound appreciates relative to the Euro. As we expand internationally, our results of operations and cash flows will become increasingly subject to changes in foreign currency exchange rates.</p>
  <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">We have not used forward contracts or currency borrowings to hedge our exposure to foreign currency risk. Foreign currency risk can be assessed by estimating the change in results of operations or financial position resulting from a hypothetical 10% adverse change in foreign exchange rates. We believe such a change would generally not have a material impact on our financial position, but could have a material impact on our results of operations. We recognized foreign currency losses of $0.8 million&#xa0;for the year&#xa0;ended December 31, 2019 and foreign currency&#xa0;gains of $0.3 million and $0.4 million for the years ended&#xa0;December 31, 2018 and 2017, respectively.</p>
  <p style="margin: 0pt 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     46
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;"><b><a id="item8_financialstatementsandsup" title="item8_financialstatementsandsup" href="#"></a>Item&#xa0;8. Financial Statements and Supplementary Data</b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-right: 0pt; margin-left: 0pt;">
   <tbody>
    <tr style="font-size: 10pt;">
     <td style="width: 100%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Proto Labs, Inc.</b></p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td style="width: 100%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Index to Consolidated Financial Statements</b></p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt 7.2pt; text-align: center; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-left: 0pt;">
   <tbody>
    <tr style="font-size: 10pt;">
     <td style="width: 10%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 2%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 78%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b>Page</b></p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#report1" style="-sec-extract:exhibit;">Report of Independent Registered Public Accounting Firm on Consolidated Financial Statements</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">48</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#report2" style="-sec-extract:exhibit;">Report of Independent Registered Public Accounting Firm</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">50</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#bs" style="-sec-extract:exhibit;">Consolidated Balance Sheets at December 31, 2019 and 2018</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">51</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#income" style="-sec-extract:exhibit;">Consolidated Statements of Comprehensive Income for the years ended December 31, 2019, 2018 and 2017</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">52</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#equity" style="-sec-extract:exhibit;">Consolidated Statements of Shareholders' Equity for the years ended December 31, 2019, 2018 and 2017</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">53</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#cf" style="-sec-extract:exhibit;">Consolidated Statements of Cash Flows for the years ended December 31, 2019, 2018 and 2017</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">54</p> </td>
    </tr>
    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-size: 10pt;"><a href="#notes" style="-sec-extract:exhibit;">Notes to Consolidated Financial Statements</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-size: 10pt;">55</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt;">
     47
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: center; font-size: 10pt;"><b><a id="report1" title="report1" href="#"></a>Report of Independent Registered Public Accounting Firm </b></p>
  <p style="margin: 0pt 7.2pt; text-align: left; font-size: 10pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">To the Shareholders and the Board of Directors of Proto Labs, Inc.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Opinion on the Financial Statements </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have audited the accompanying consolidated balance sheets of Proto Labs, Inc. (the Company) as of December 31, 2019 and 2018, the related consolidated statements of comprehensive income, shareholders' equity and cash flows for each of the three years in the period ended December 31, 2019, and the related notes (collectively referred to as the &#x201c;consolidated financial statements&#x201d;). In our opinion, the consolidated financial statements present fairly, in all material respects, the financial position of the Company at December 31, 2019 and 2018, and the results of its operations and its cash flows for each of the three years in the period ended December 31, 2019, in conformity with U.S. generally accepted accounting principles.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the Company's internal control over financial reporting as of December 31, 2019, based on criteria established in Internal Control-Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (2013 framework) and our report dated February 26, 2020 expressed an unqualified opinion thereon.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Basis for Opinion </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">These financial statements are the responsibility of the Company's management. Our responsibility is to express an opinion on the Company&#x2019;s financial statements based on our audits. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether the financial statements are free of material misstatement, whether due to error or fraud. Our audits included performing procedures to assess the risks of material misstatement of the financial statements, whether due to error or fraud, and performing procedures that respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the financial statements. We believe that our audits provide a reasonable basis for our opinion.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Critical Audit Matters</b><sup style="vertical-align:top;line-height:120%;font-size:pt"><b> </b></sup></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">The critical audit matters communicated below are matters arising from the current period audit of the consolidated financial statements that were communicated or required to be communicated to the audit committee and that: (1) relate to accounts or disclosures that are material to the consolidated financial statements and (2) involved our especially challenging, subjective or complex judgments. The communication of critical audit matters does not alter in any way our opinion on the consolidated financial statements, taken as a whole, and we are not, by communicating the critical audit matters below, providing separate opinions on the critical audit matters or on the accounts or disclosures to which they relate.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i><b>Revenue Recognition &#x2013; Revenue Recognized Over Time</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>Description of the Matter</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">As discussed in Notes 2 and 3 to the consolidated financial statements, the Company provides quality, quick-turn prototyping and on-demand manufacturing services.&#xa0; The majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#xa0; The Company manufactures parts that have no alternative use to the Company since the parts are custom made to specific customer orders and the Company believes that there is a legally enforceable right to payment for performance completed to date on these manufactured parts.&#xa0; Revenue is recognized over time for manufactured parts which meet these two criteria.&#xa0; For revenue recognized over time, management uses the input method to measure progress toward the complete satisfaction of performance obligations, based on production time incurred to date as a percentage of total estimated production time.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%">
     48
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">Auditing revenue recognized over time was challenging because the relevant accounting standard requires the Company to estimate the progress towards satisfaction of performance obligations, applying a single appropriate method to measure progress.&#xa0; The input method requires an analysis of the incurred time in production and an estimate of the total time necessary to complete the total parts per the customer&#x2019;s order.&#xa0; The Company also estimates a reasonable profit margin. These estimates are based on management&#x2019;s assessment of the current status of production as well as historical results.</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">&#xa0;</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>How We Addressed the Matter in Our Audit</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">We obtained an understanding, evaluated the design and tested the operating effectiveness of controls over the Company&#x2019;s process for recognizing revenue over time. This included testing controls over management&#x2019;s evaluation of contract terms, the estimation of production time incurred to date and total production time used in the input method, estimation of a reasonable profit margin and the completeness and accuracy of the data used in the input method.&#xa0;&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">To test the Company&#x2019;s revenue recognition over time, we performed audit procedures that included, among others, inspecting a sample of contracts to evaluate the existence of an enforceable right to payment for performance completed to date, evaluating the progress towards completion of orders in process through examination of a sample of product shipments subsequent to the end of the reporting period, evaluating the reasonableness of management&#x2019;s estimate of profit margins based on a comparison to historical margins, testing the appropriateness of the timing and amount of revenue recognized over time based on the underlying inputs, and performing an independent sensitivity analysis to evaluate the impact on revenues of changes in significant assumptions.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">&#xa0;</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i><b>Capitalized Software Costs</b></i></p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">&#xa0;</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>Description of the Matter</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">As discussed in Note 2 to the consolidated financial statements, the Company follows ASC 350-40, Internal-Use Software, in accounting for internally developed software. The Company capitalized $16.1 million of internal-use software costs during the year ended December 31, 2019.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">Auditing capitalized internal-use software development costs was challenging due to the degree of subjectivity involved in management&#x2019;s assessment of what development activities and related costs met the capitalization criteria, as only those costs incurred in certain stages of software development and certain types of costs qualify for capitalization in accordance with the applicable accounting standard.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">&#xa0;</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>How We Addressed the Matter in Our Audit</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">We obtained an understanding, evaluated the design and tested the operating effectiveness of controls over the Company&#x2019;s internal-use software costs process. This included testing controls over management&#x2019;s determination of which costs qualify for capitalization in accordance with the applicable accounting standard and Company policy.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">To test the Company&#x2019;s capitalization of internal-use software costs, we performed audit procedures that included, among others, inspecting underlying documentation to evaluate whether the costs were capitalizable in accordance with the Company&#x2019;s capitalization policy and the applicable accounting standard. We also assessed the Company&#x2019;s determination of costs that qualified for capitalization through inspection of a sample of vendor contracts and invoices, inquiries of project personnel to assess the nature of the costs and review of payroll data to evaluate the internal payroll costs capitalized.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">/s/ Ernst &amp; Young LLP</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have served as the Company&#x2019;s auditor since 2011.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Minneapolis, Minnesota</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">February 26, 2020</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     49
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b><a id="report2" title="report2" href="#"></a>Report of Independent Registered Public Accounting Firm</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>&#xa0;</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">To the Shareholders and the Board of Directors of Proto Labs, Inc.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Opinion on Internal Control over Financial Reporting</b>&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have audited Proto Labs, Inc.&#x2019;s internal control over financial reporting as of December 31, 2019, based on criteria established in Internal Control&#x2014;Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (2013 framework) (the COSO criteria). In our opinion, Proto Labs, Inc. (the Company) maintained, in all material respects, effective internal control over financial reporting as of December 31, 2019, based on the COSO criteria.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the consolidated balance sheets of Proto Labs, Inc. as of December 31, 2019 and 2018, the related consolidated statements of comprehensive income, shareholders' equity and cash flows for each of the three years in the period ended December 31, 2019, and the related notes<b> </b>and our report dated February 26, 2020 expressed an unqualified opinion thereon.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Basis for Opinion </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">The Company&#x2019;s management is responsible for maintaining effective internal control over financial reporting and for its assessment of the effectiveness of internal control over financial reporting included in the accompanying Management&#x2019;s Annual Report on Internal Control Over Financial Reporting. Our responsibility is to express an opinion on the Company&#x2019;s internal control over financial reporting based on our audit. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We conducted our audit in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether effective internal control over financial reporting was maintained in all material respects.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Our audit included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, testing and evaluating the design and operating effectiveness of internal control based on the assessed risk, and performing such other procedures as we considered necessary in the circumstances. We believe that our audit provides a reasonable basis for our opinion.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Definition and Limitations of Internal Control Over Financial Reporting </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">A company&#x2019;s internal control over financial reporting is a process designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles. A company&#x2019;s internal control over financial reporting includes those policies and procedures that (1) pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2) provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3) provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company&#x2019;s assets that could have a material effect on the financial statements.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">/s/ Ernst &amp; Young LLP</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Minneapolis, Minnesota</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">February 26, 2020</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     50
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="bs" title="bs" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Consolidated Balance Sheets</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>(In thousands, except share and per share amounts)</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Cash and cash equivalents</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001818" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">125,225</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001819" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">85,046</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Short-term marketable securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001820" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MarketableSecuritiesCurrent" scale="3">35,437</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001821" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:MarketableSecuritiesCurrent" scale="3">46,750</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Accounts receivable, net of allowance for doubtful accounts of $952 and $919 as of December 31, 2019 and December 31, 2018, respectively</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001822" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:AccountsReceivableNetCurrent" scale="3">57,450</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001823" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" scale="3">59,155</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Inventory</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001826" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryNet" scale="3">10,075</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001827" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryNet" scale="3">10,087</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Prepaid expenses and other current assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001828" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3">8,232</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001829" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3">8,567</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Income taxes receivable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001830" contextRef="i_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:IncomeTaxesReceivable" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001831" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxesReceivable" scale="3">5,757</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total current assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001832" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AssetsCurrent" scale="3">236,419</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001833" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AssetsCurrent" scale="3">215,362</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Property and equipment, net</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001834" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">263,712</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001835" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">228,001</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001836" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">128,752</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001837" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">128,752</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other intangible assets, net</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001838" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherIntangibleAssetsNet" scale="3">17,369</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001839" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OtherIntangibleAssetsNet" scale="3">19,850</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Long-term marketable securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001840" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:MarketableSecuritiesNoncurrent" scale="3">12,960</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001841" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MarketableSecuritiesNoncurrent" scale="3">23,579</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Operating lease assets</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56001842" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3">11,425</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56001843" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001844" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OtherAssetsNoncurrent" scale="3">3,030</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001845" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" scale="3">3,441</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001846" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Assets" scale="3">673,667</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001847" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Assets" scale="3">618,985</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities and shareholders' equity</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Accounts payable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001850" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccountsPayableCurrent" scale="3">16,804</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001851" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccountsPayableCurrent" scale="3">17,411</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Accrued compensation</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001852" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3">15,058</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001853" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3">18,130</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Accrued liabilities and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001854" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccruedLiabilitiesAndOtherLiabilities" scale="3">11,057</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001855" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccruedLiabilitiesAndOtherLiabilities" scale="3">16,702</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0pt 0pt 0pt 18pt;">Current operating lease liabilities</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56001856" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3">3,340</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56001857" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Income taxes payable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001858" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3">1,322</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001859" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3">491</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total current liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001860" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LiabilitiesCurrent" scale="3">47,581</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001861" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LiabilitiesCurrent" scale="3">52,734</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt; text-indent: -9pt;">Long-term operating lease liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001862" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3">8,565</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001863" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Long-term deferred tax liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001864" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3">26,283</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001865" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3">20,162</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001866" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3">5,448</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001867" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3">4,592</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001868" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Liabilities" scale="3">87,877</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001869" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Liabilities" scale="3">77,488</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Shareholders' equity</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of December 31, 2019 and December 31, 2018, respectively</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001871" contextRef="i_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:PreferredStockValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001872" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:PreferredStockValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,786,459 and 26,984,747 shares as of December 31, 2019 and December 31, 2018, respectively</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001881" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CommonStockValue" scale="3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001882" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CommonStockValue" scale="3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Additional paid-in capital</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001891" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3">268,059</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001892" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3">258,502</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Retained earnings</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001893" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3">324,722</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001894" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3">291,460</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Accumulated other comprehensive loss</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56001895" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" sign="-" scale="3">7,018</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56001896" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" sign="-" scale="3">8,492</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total shareholders' equity</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001897" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:StockholdersEquity" scale="3">585,790</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001898" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">541,497</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Total liabilities and shareholders' equity</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001899" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3">673,667</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001900" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3">618,985</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
     </tr>
    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     51
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="income" title="income" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Consolidated Statements of Comprehensive Income</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>(In thousands, except share and per share amounts)</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Statements of Operations:</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001908" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">458,728</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001909" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">445,596</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001910" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">344,490</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001911" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" scale="3">223,438</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001912" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" scale="3">206,917</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001913" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" scale="3">150,648</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Gross profit</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001914" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:GrossProfit" scale="3">235,290</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001915" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GrossProfit" scale="3">238,679</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001916" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GrossProfit" scale="3">193,842</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001918" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:SellingAndMarketingExpense" scale="3">72,976</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001919" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:SellingAndMarketingExpense" scale="3">68,533</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001920" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:SellingAndMarketingExpense" scale="3">56,856</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001921" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" scale="3">32,692</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001922" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" scale="3">28,735</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001923" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:ResearchAndDevelopmentExpense" scale="3">23,560</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001924" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GeneralAndAdministrativeExpense" scale="3">49,766</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001925" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GeneralAndAdministrativeExpense" scale="3">52,513</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001926" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:GeneralAndAdministrativeExpense" scale="3">41,200</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total operating expenses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001927" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingExpenses" scale="3">155,434</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001928" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingExpenses" scale="3">149,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001929" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingExpenses" scale="3">121,616</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income from operations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001930" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">79,856</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001931" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">88,898</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001932" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">72,226</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other income, net</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001933" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3">1,337</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001934" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3">2,757</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001935" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3">2,209</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Income before income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001936" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">81,193</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001937" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">91,655</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001938" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">74,435</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Provision for income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001939" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">17,538</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001940" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">15,067</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001941" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">22,657</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001942" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">63,655</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001943" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">76,588</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001944" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">51,778</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001946" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">2.37</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001947" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">2.84</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001948" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">1.94</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001949" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">2.35</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001950" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">2.81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001951" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">1.93</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Shares used to compute net income per share:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001953" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,866,985</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001954" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,982,614</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001955" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,647,610</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001956" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">27,049,423</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001957" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">27,278,816</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001958" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">26,845,071</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Other Comprehensive (Loss) Income, net of tax</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign currency translation adjustments</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001960" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">1,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56001961" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" sign="-" scale="3">3,258</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56001962" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">5,519</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Comprehensive income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001963" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">65,129</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001964" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">73,330</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56001965" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">57,297</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     52
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="equity" title="equity" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Consolidated Statements of Shareholders' Equity</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>(In thousands, except share amounts) </b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>
   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0); width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Common Stock</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Additional</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Other</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Paid-In</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Retained</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Comprehensive</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Shares</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amount</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Capital</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Earnings</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Loss</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Total</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="width: 40%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 12%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at January 1, 2017</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001984" contextRef="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0">26,504,868</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001985" contextRef="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">26</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001986" contextRef="i_2016-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">213,857</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001987" contextRef="i_2016-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">176,703</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56001988" contextRef="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">10,753</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001989" contextRef="i_2016-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">379,833</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001990" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0">283,449</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001991" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001992" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">8,603</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001993" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001994" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001995" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">8,604</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued for RAPID acquisition</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001996" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesAcquisitions" scale="0">118,140</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001997" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001998" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3">11,335</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56001999" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002000" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002001" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3">11,336</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002003" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002004" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">8,558</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002005" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002006" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002007" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">8,558</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of Common Stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002008" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0">77,806</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002009" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002010" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">628</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002011" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">3,784</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002012" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002013" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">4,413</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002015" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002016" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002017" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">51,778</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002018" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002019" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">51,778</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive income</i></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002022" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002023" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002024" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002025" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">5,519</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c56002026" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">5,519</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002032" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">57,297</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2017</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002033" contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0">26,828,651</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002034" contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002035" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">241,725</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002036" contextRef="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">224,697</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002037" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">5,234</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002038" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">461,215</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002039" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0">260,694</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002040" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002041" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">6,791</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002042" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002043" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002044" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">6,791</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002046" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002047" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">10,928</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002048" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002049" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002050" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">10,928</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of Common Stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002051" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0">104,598</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002052" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002053" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">942</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002054" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">11,287</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002055" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002056" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">12,229</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Revenue recognition transition adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002058" contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002059" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002060" contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="3">1,462</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002061" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002062" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="3">1,462</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002064" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002065" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002066" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">76,588</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002067" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002068" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">76,588</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive income</i></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002071" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002072" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002073" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002074" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" sign="-" scale="3">3,258</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002075" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" sign="-" scale="3">3,258</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002081" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">73,330</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2018</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002082" contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0">26,984,747</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002083" contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002084" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">258,502</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002085" contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:StockholdersEquity" scale="3">291,460</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002086" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">8,492</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002087" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">541,497</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002088" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0">128,174</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002089" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002090" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">1,904</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002091" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002092" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002093" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3">1,904</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002095" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002096" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">10,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002097" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002098" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002099" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3">10,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of Common Stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002100" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0">326,462</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002101" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002102" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">3,128</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002103" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">30,393</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002104" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002105" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3">33,521</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002107" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002108" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002109" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">63,655</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002110" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002111" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">63,655</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive income</i></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font-weight: inherit; font-style: normal;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002114" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002115" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002116" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002117" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">1,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c56002118" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3">1,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002124" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3">65,129</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2019</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002125" contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:CommonStockSharesOutstanding" scale="0">26,786,459</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002126" contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002127" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">268,059</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002128" contextRef="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" scale="3">324,722</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002129" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">7,018</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002130" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:StockholdersEquity" scale="3">585,790</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     53
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="cf" title="cf" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Consolidated Statements of Cash Flows</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>(In thousands)</b></p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Operating activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002138" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">63,655</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002139" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">76,588</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002140" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">51,778</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Adjustments to reconcile net income to net cash provided by operating activities:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Depreciation and amortization</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002142" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">30,864</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002143" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">26,754</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002144" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">18,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002145" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensation" scale="3">10,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002146" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensation" scale="3">10,928</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002147" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensation" scale="3">8,558</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Deferred taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002148" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3">6,106</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002149" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3">11,936</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002150" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3">1,174</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Loss on impairment of assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002151" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetImpairmentCharges" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002152" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetImpairmentCharges" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002153" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AssetImpairmentCharges" scale="3">513</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Gain on sale of businesses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002154" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GainLossOnSaleOfBusiness" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002155" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GainLossOnSaleOfBusiness" scale="3">671</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002156" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GainLossOnSaleOfBusiness" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Amortization of held-to-maturity securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002157" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" sign="-" scale="3">5</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002158" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" sign="-" scale="3">374</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002159" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" sign="-" scale="3">1,063</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002160" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNoncashIncomeExpense" sign="-" scale="3">391</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002161" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNoncashIncomeExpense" scale="3">619</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002162" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherNoncashIncomeExpense" scale="3">153</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 45pt; text-indent: -9pt;">Changes in operating assets and liabilities, net of acquisitions:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Accounts receivable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002164" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" sign="-" scale="3">1,848</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002165" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3">6,098</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002166" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3">9,933</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Inventories</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002167" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:IncreaseDecreaseInInventories" sign="-" scale="3">60</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002168" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" scale="3">189</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002169" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" scale="3">985</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Prepaid expenses and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002170" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" sign="-" scale="3">545</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002171" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3">2,098</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002172" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3">691</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002173" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3">6,555</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002174" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" sign="-" scale="3">6,652</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002175" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3">1,646</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Accounts payable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002176" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" sign="-" scale="3">719</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002177" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3">1,942</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002178" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3">3,176</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Accrued liabilities and other</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002179" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" sign="-" scale="3">4,039</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002180" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3">10,734</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002181" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3">7,128</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net cash provided by operating activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002182" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3">116,052</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002183" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3">122,929</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002184" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3">81,748</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Investing activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Purchases of property, equipment and other capital assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002186" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">62,230</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002187" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">87,104</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002188" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">32,635</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Cash used for acquisitions, net of cash acquired</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002189" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002190" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3">90</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002191" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3">110,533</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Proceeds from sale of businesses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002192" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ProceedsFromDivestitureOfBusinesses" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002193" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromDivestitureOfBusinesses" scale="3">284</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002194" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ProceedsFromDivestitureOfBusinesses" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Purchases of other assets and investments</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002195" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3">4,000</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002196" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3">126</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002197" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3">8,742</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Purchases of marketable securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002198" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3">46,403</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002199" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3">41,384</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002200" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3">20,037</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Proceeds from maturities of marketable securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002201" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3">68,330</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002202" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3">65,139</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002203" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3">47,972</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net cash used in investing activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002204" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" sign="-" scale="3">44,303</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002205" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" sign="-" scale="3">63,281</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002206" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" sign="-" scale="3">123,975</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financing activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Payments on debt</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002208" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:RepaymentsOfLongTermDebt" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002209" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:RepaymentsOfLongTermDebt" scale="3">5,000</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002210" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:RepaymentsOfLongTermDebt" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Proceeds from issuance of debt</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002211" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfDebt" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002212" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfDebt" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002213" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:ProceedsFromIssuanceOfDebt" scale="3">5,000</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Proceeds from exercises of stock options</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002214" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3">4,391</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002215" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3">8,935</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002216" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3">8,602</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Purchases of shares withheld for tax obligations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002217" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3">2,487</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002218" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3">2,144</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002219" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" sign="-" scale="3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Repurchases of common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002220" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3">33,521</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002221" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3">12,229</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002222" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3">4,410</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net cash used in financing activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002223" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" sign="-" scale="3">31,617</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002224" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" sign="-" scale="3">10,438</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002225" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3">9,192</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of exchange rate changes on cash and cash equivalents</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002226" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents" scale="3">47</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002227" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents" sign="-" scale="3">871</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002228" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents" scale="3">947</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Net increase (decrease) in cash and cash equivalents</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002229" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease" scale="3">40,179</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002230" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease" scale="3">48,339</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002231" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease" sign="-" scale="3">32,088</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Cash and cash equivalents, beginning of period</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002232" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">85,046</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002233" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">36,707</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002234" contextRef="i_2016-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">68,795</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Cash and cash equivalents, end of period</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002235" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">125,225</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002236" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">85,046</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002237" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3">36,707</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Supplemental cash flow disclosure</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Cash paid for interest</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002239" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InterestPaidNet" scale="3">14</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002240" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InterestPaidNet" scale="3">39</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002241" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InterestPaidNet" scale="3">19</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Cash paid for taxes</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002242" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxesPaid" scale="3">4,002</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002243" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxesPaid" scale="3">9,966</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002244" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxesPaid" scale="3">19,113</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>
    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><br /> The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     54
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" id="c1434366" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b><a id="notes" title="notes" href="#"></a></b></p><ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">1</em> &#x2014; Nature of Business</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Organization and business</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#xa0;injection-molded, computer numerical control (CNC) machined, <em style="font-weight: inherit; font-style: normal;">3D</em>-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#x2019;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#x2019;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use <em style="font-weight: inherit; font-style: normal;">three</em>-dimensional (<em style="font-weight: inherit; font-style: normal;">3D</em>)&#xa0;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#x2019;s primary manufacturing product lines currently include Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#x2019;s subsidiaries are:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#xa0;</b>&#xa0;</p>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Name</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Location</b></p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="width: 5%;">&#xa0;</td>
      <td style="width: 58%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 36%; text-align: right;">&#xa0;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL-US International LLC</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Management Group LLC</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Sheet Metal LLC (RSM)</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Manufacturing LLC (RM)</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Ltd.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL International Holdings, UK, Ltd.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL Euro Services Limited</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs GmbH</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Tooling GmbH</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs, G.K.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Japan</p> </td>
     </tr>
    </tbody>
   </table>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"></p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="c1434367" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">2</em> &#x2014; Summary of Significant Accounting Policies</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ConsolidationPolicyTextBlock" id="c56025627" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ComprehensiveIncomePolicyPolicyTextBlock" id="c56025628" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">55</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:UseOfEstimates" id="c56025629" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:CashAndCashEquivalentsPolicyTextBlock" id="c56025630" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font-weight: inherit; font-style: normal;"> may </em>exceed federally insured limits. The Company has <em style="font-weight: inherit; font-style: normal;">not</em> experienced any losses on such accounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"></p></ix:nonNumeric><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:MarketableSecuritiesPolicy" id="c56025631" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. The Company reviews impairments associated with its marketable securities in accordance with the measurement guidance provided by ASC <em style="font-weight: inherit; font-style: normal;">320,</em> <i>Investments &#x2013; Debt and Equity Securities,</i> when determining the classification of impairment as &#x201c;temporary&#x201d; or &#x201c;other-than-temporary.&#x201d; The factors used to differentiate between temporary and other-than-temporary include assessment of the quality of the security, credit ratings actions and management&#x2019;s intent to hold the security to maturity as well as other factors.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:TradeAndOtherAccountsReceivablePolicy" id="c56025632" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font-weight: inherit; font-style: normal;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:InventoryPolicyTextBlock" id="c56025633" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average cost method, which approximates <em style="font-weight: inherit; font-style: normal;">first</em>-in, <em style="font-weight: inherit; font-style: normal;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="c56025634" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002268" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002270" format="ixt-sec:duryear">39</ix:nonNumeric>&#xa0;years. Manufacturing equipment is depreciated over <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002272" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002274" format="ixt-sec:duryear">15</ix:nonNumeric>&#xa0;years, office furniture and equipment are depreciated over <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002276" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002278" format="ixt-sec:duryear">7</ix:nonNumeric>&#xa0;years, computer hardware and software are depreciated over <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002280" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002282" format="ixt-sec:duryear">5</ix:nonNumeric>&#xa0;years, building costs are depreciated over <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002284" format="ixt-sec:duryear">39</ix:nonNumeric>&#xa0;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002286" format="ixt-sec:duryear">10</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c56002288" format="ixt-sec:duryear">39</ix:nonNumeric> years. Assets <em style="font-weight: inherit; font-style: normal;">not</em> in service are <em style="font-weight: inherit; font-style: normal;">not</em> depreciated until the asset is put into use.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#xa0;<em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, $<ix:nonFraction id="c56002295" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CapitalizedComputerSoftwareNet" scale="6">32.7</ix:nonFraction> million and $<ix:nonFraction id="c56002296" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CapitalizedComputerSoftwareNet" scale="6">16.6</ix:nonFraction> million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>were <em style="font-weight: inherit; font-style: normal;">$16.1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">56</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="c56025635" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font-weight: inherit; font-style: normal;">350,</em> <i>Intangibles&#x2014;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font-weight: inherit; font-style: normal;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font-weight: inherit; font-style: normal;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" id="c56025636" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c56002302">two</span> to <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002303" format="ixt-sec:duryear">10</ix:nonNumeric> years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" id="c56025637" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font-weight: inherit; font-style: normal;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:RevenueRecognitionPolicyTextBlock" id="c56025638" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2018, </em>the Company adopted&#xa0;ASC <em style="font-weight: inherit; font-style: normal;">606,</em> <i>Revenue from Contracts with Customers,</i>&#xa0;using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Prior to <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company recognized revenue when it was realized or realizable and earned when all of the following criteria were met: persuasive evidence of an arrangement existed, delivery had occurred or services had been rendered, the price to the buyer was fixed or determinable and collectability was reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in the Company&#x2019;s Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal product lines.&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:nonNumeric><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:LesseeLeasesPolicyTextBlock" id="c56025639" escape="true"><p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2019, </em>the Company adopted ASC <em style="font-weight: inherit; font-style: normal;">842,</em> <i>Leases</i>, which introduced the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"></em></div></div><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></div></div></ix:exclude></ix:nonNumeric><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">57</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:IncomeTaxPolicyTextBlock" id="c56025640" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font-weight: inherit; font-style: normal;">740,</em><i> Income Taxes</i> (ASC <em style="font-weight: inherit; font-style: normal;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#xa0;<em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recognized.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font-weight: inherit; font-style: normal;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font-weight: inherit; font-style: normal;">not</em> criterion. Additionally, ASC <em style="font-weight: inherit; font-style: normal;">740</em> provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:CompensationRelatedCostsPolicyTextBlock" id="c56025641" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718,</em><i> Compensation&#x2014;Stock Compensation</i> (ASC <em style="font-weight: inherit; font-style: normal;">718</em>). Under the fair value recognition provisions of ASC <em style="font-weight: inherit; font-style: normal;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are <em style="font-weight: inherit; font-style: normal;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:AdvertisingCostsPolicyTextBlock" id="c56025642" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $<ix:nonFraction id="c56002322" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:AdvertisingExpense" scale="6">13.0</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002323" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AdvertisingExpense" scale="6">11.8</ix:nonFraction> million and $<ix:nonFraction id="c56002324" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AdvertisingExpense" scale="6">10.7</ix:nonFraction> million for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em>&#xa0;and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ResearchAndDevelopmentExpensePolicy" id="c56025643" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC <em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $<ix:nonFraction id="c56002331" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ResearchAndDevelopmentExpense" scale="6">32.7</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002332" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ResearchAndDevelopmentExpense" scale="6">28.7</ix:nonFraction> million and $<ix:nonFraction id="c56002333" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ResearchAndDevelopmentExpense" scale="6">23.6</ix:nonFraction> million for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" id="c56025644" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:BusinessCombinationsPolicy" id="c56025645" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Business combinations</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for business combinations in accordance with ASC <em style="font-weight: inherit; font-style: normal;">805,</em> <i>Business Combinations </i>(ASC <em style="font-weight: inherit; font-style: normal;">805</em>). On <em style="font-weight: inherit; font-style: normal;"> November 30, 2017, </em>the Company acquired&#xa0;RAPID Manufacturing Group, LLC (RAPID) for $<ix:nonFraction id="c56002338" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="6">122.0</ix:nonFraction> million, consisting of $<ix:nonFraction id="c56002339" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="6">110.6</ix:nonFraction> million in cash and $<ix:nonFraction id="c56002340" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6">11.3</ix:nonFraction> million in the Company&#x2019;s common stock.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"></em></div></div><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></div></div></ix:exclude></ix:nonNumeric><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">58</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b></b></i></p><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="c56025646" escape="true"><p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently adopted accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">04,</em> <i>Intangibles &#x2013; Goodwill and Other, </i>which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had <em style="font-weight: inherit; font-style: normal;">no</em> material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">02,</em>&#xa0;<i>Leases&#xa0;</i>(ASC <em style="font-weight: inherit; font-style: normal;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font-weight: inherit; font-style: normal;">2018</em>-<em style="font-weight: inherit; font-style: normal;">11,</em>&#xa0;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font-weight: inherit; font-style: normal;">840,</em>&#xa0;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#xa0;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font-weight: inherit; font-style: normal;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on <em style="font-weight: inherit; font-style: normal;"> January 1, 2019 </em>of $<ix:nonFraction id="c56002356" contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="6">13.1</ix:nonFraction> million.</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2014</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Revenue from Contracts with Customers </i>(ASC <em style="font-weight: inherit; font-style: normal;">606</em>). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. The Company adopted the new revenue standard using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#xa0;manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. The transition adjustment recorded was an increase of $<ix:nonFraction id="c56002364" contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="6">1.5</ix:nonFraction> million&#xa0;to the Company's retained earnings balance&#xa0;as of&#xa0;<em style="font-weight: inherit; font-style: normal;"> January 1, 2018.</em></p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted ASU <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Compensation &#x2013; Stock Compensation</i>, which is intended to provide clarity and reduce diversity in practice&#xa0;as well as&#xa0;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently issued accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> December 2019, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2019</em>-<em style="font-weight: inherit; font-style: normal;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font-weight: inherit; font-style: normal;">not</em> expect the impact to be material.</p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> June 2016, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">13,</em> <i>Financial Instruments &#x2013; Credit Losses, </i>which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2019 </em>and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p></ix:nonNumeric><p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">59</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="c1434368" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">3</em> &#x2013; Revenue</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#xa0;The Company&#xa0;accounts for revenue in accordance with ASC <em style="font-weight: inherit; font-style: normal;">606,</em> which the Company&#xa0;adopted on <em style="font-weight: inherit; font-style: normal;"> January 1, 2018, </em>using the modified retrospective method. Results for reporting periods beginning after <em style="font-weight: inherit; font-style: normal;"> January 1, 2018 </em>are presented under&#xa0;ASC <em style="font-weight: inherit; font-style: normal;">606,</em> while prior period amounts are <em style="font-weight: inherit; font-style: normal;">not</em> adjusted and continue to be reported in accordance with the Company&#x2019;s historic accounting under ASC <em style="font-weight: inherit; font-style: normal;">605.</em> The Company recorded a net increase of $<ix:nonFraction id="c56002383" contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="6">1.5</ix:nonFraction> million&#xa0;to its retained earnings balance on <em style="font-weight: inherit; font-style: normal;"> January 1, 2018 </em>due to the cumulative impact of adopting&#xa0;ASC <em style="font-weight: inherit; font-style: normal;">606.</em> The impact of adopting&#xa0;ASC <em style="font-weight: inherit; font-style: normal;">606</em> was to increase revenue by&#xa0;$<ix:nonFraction id="c56002386" contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="6">0.3</ix:nonFraction> million and increase cost of revenue&#xa0;by&#xa0;$<ix:nonFraction id="c56002387" contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CostOfGoodsAndServicesSold" scale="6">0.2</ix:nonFraction> million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018, </em>and to&#xa0;increase accounts receivable by $<ix:nonFraction id="c56002388" contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="6">2.9</ix:nonFraction> million and decrease&#xa0;inventory by $<ix:nonFraction id="c56002389" contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:IncreaseDecreaseInInventories" sign="-" scale="6">1.3</ix:nonFraction> million&#xa0;as of&#xa0;<em style="font-weight: inherit; font-style: normal;"> December 31, 2018, </em>which includes the transition adjustment of $<ix:nonFraction id="c56002390" contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" scale="6">1.5</ix:nonFraction> million noted above.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC <em style="font-weight: inherit; font-style: normal;">606.</em> The majority of the Company&#x2019;s CNC machining, <em style="font-weight: inherit; font-style: normal;">3D</em> printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including <em style="font-weight: inherit; font-style: normal;">one</em> obligation to produce the mold and a <em style="font-weight: inherit; font-style: normal;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company manufactures parts that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by geographic region for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="c61258AF4-9D7A-40F9-98FB-7A3C0301BCB4" escape="true" continuedAt="c5E2389BB-44FB-417E-8FB9-35ABA7F24EB5">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002412" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">360,205</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002413" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">350,535</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002414" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">263,086</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002415" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">82,805</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002416" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">80,889</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002417" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">70,154</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002418" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">15,718</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002419" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">14,172</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002420" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">11,250</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002421" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">458,728</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002422" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">445,596</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002423" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">344,490</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by product line for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em>&#xa0;and <em style="font-weight: inherit; font-style: normal;">2017</em> was as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:continuation id="c5E2389BB-44FB-417E-8FB9-35ABA7F24EB5">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Injection Molding</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002431" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">217,415</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002432" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">210,523</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002433" contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">194,432</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">CNC Machining</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002434" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">155,473</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002435" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">153,521</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002436" contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">103,739</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">3D Printing</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002437" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">61,352</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002438" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">53,342</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002439" contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">43,329</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Sheet Metal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002440" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">21,000</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002441" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">24,998</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002442" contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">1,767</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002443" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">3,488</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002444" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">3,212</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002445" contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">1,223</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002446" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">458,728</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002447" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">445,596</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002448" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">344,490</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:continuation>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#xa0;generally expenses sales commissions when incurred because the amortization period would have been <em style="font-weight: inherit; font-style: normal;">one</em> year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of <em style="font-weight: inherit; font-style: normal;">one</em> year or less is <em style="font-weight: inherit; font-style: normal;">not</em> material.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">60</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:EarningsPerShareTextBlock" id="c1434371" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">4</em> &#x2013; Net Income Per Common Share</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Basic net income per share is computed based on the weighted average number of common shares outstanding. Diluted net income per share is computed based on the weighted average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had the potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="c1434372" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net Income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002456" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">63,655</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002457" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">76,588</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002458" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:NetIncomeLoss" scale="3">51,778</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002459" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,866,985</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002460" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,982,614</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002461" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0">26,647,610</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002463" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0">182,438</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002464" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0">296,202</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002465" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0">197,461</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002466" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">27,049,423</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002467" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">27,278,816</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002468" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0">26,845,071</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share attributable to common shareholders:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002470" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">2.37</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002471" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">2.84</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002472" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareBasic" scale="0">1.94</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002473" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">2.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002474" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">2.81</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002475" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:EarningsPerShareDiluted" scale="0">1.93</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p><ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:BusinessCombinationDisclosureTextBlock" id="c1434373" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">5</em> &#x2013; Business Combinations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font-weight: inherit; font-style: normal;"> November 30, 2017, </em>the Company acquired RAPID for $<ix:nonFraction id="c56002477" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="6">122.0</ix:nonFraction> million, consisting of $<ix:nonFraction id="c56002478" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="6">110.6</ix:nonFraction> million in cash (net of cash acquired)&#xa0;and $<ix:nonFraction id="c56002479" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6">11.3</ix:nonFraction> million in the Company&#x2019;s common stock. The operations of RAPID are integrated into the operations of the Company.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">RAPID is a New Hampshire-based custom parts supplier specializing in quick-turn sheet metal fabrication and CNC machining. With the acquisition, the Company offers its customers another quick-turn manufacturing service while expanding its CNC machining capabilities.&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC <em style="font-weight: inherit; font-style: normal;">805.</em> The fair value of the consideration paid exceeded the fair value of the assets&#xa0;acquired and liabilities assumed, which resulted in goodwill of $<ix:nonFraction id="c56002481" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:Goodwill" scale="6">99.8</ix:nonFraction> million. The goodwill primarily&#xa0;relates to&#xa0;synergies resulting from the acquisition&#xa0;and&#xa0;is deductible for tax purposes over a <ix:nonNumeric contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" name="prlb:BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" id="c56002482" format="ixt-sec:duryear">15</ix:nonNumeric>-year period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">61</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The RAPID&#xa0;amortizable intangible assets&#xa0;were valued as of the acquisition date and were deemed to have&#xa0;a weighted-average useful life of&#xa0;<ix:nonNumeric contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c56002484" format="ixt-sec:duryear">5.5</ix:nonNumeric> years. The customer relationships were valued at $<ix:nonFraction id="c56002485" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" scale="6">7.5</ix:nonFraction> million based on the Multi-Period Excess Earnings Method and are amortized over <ix:nonNumeric contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002486" format="ixt-sec:duryear">6.0</ix:nonNumeric> years. The trade names were valued at $<ix:nonFraction id="c56002487" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" scale="6">1.1</ix:nonFraction> million based on the Relief-from-Royalty Method and are amortized over <ix:nonNumeric contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002488" format="ixt-sec:duryear">2.0</ix:nonNumeric> years. The non-competition agreement was valued at $<ix:nonFraction id="c56002489" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" scale="6">0.1</ix:nonFraction> million based on the Discounted Cash Flow method and will be amortized over <ix:nonNumeric contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002490" format="ixt-sec:duryear">5</ix:nonNumeric> years. The allocation of the purchase price to assets acquired and liabilities assumed is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember" name="us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" id="c1434374" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002511" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" scale="3">6,720</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002512" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">99,836</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002513" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3">8,700</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002514" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" scale="3">8,855</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002515" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" scale="3">124,111</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002517" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" scale="3">2,067</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002518" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" scale="3">85</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002519" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" scale="3">2,152</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002520" contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" scale="3">121,959</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002521" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="3">115,378</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002522" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CashAcquiredFromAcquisition" scale="3">4,755</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002523" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3">110,623</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002524" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="3">11,336</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total purchase consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002525" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="3">121,959</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following unaudited pro forma information represents the Company&#x2019;s results of operations as if the fiscal <em style="font-weight: inherit; font-style: normal;">2017</em> acquisition of RAPID had occurred at the beginning of fiscal <em style="font-weight: inherit; font-style: normal;">2016.</em> These performance results <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be indicative of the actual results that would have occurred under the ownership and management of the Company.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember" name="us-gaap:BusinessAcquisitionProFormaInformationTextBlock" id="c1434375" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2016</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">(unaudited)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002530" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessAcquisitionsProFormaRevenue" scale="3">386,677</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002531" contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessAcquisitionsProFormaRevenue" scale="3">336,634</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002532" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss" scale="3">55,070</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002533" contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss" scale="3">41,805</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The unaudited pro forma net income for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>excludes&#xa0;transaction costs of approximately $<ix:nonFraction id="c56002494" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationAcquisitionRelatedCosts" scale="6">1.9</ix:nonFraction> million and includes the increase in estimated depreciation expense of approximately $<ix:nonFraction id="c56002495" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" sign="-" scale="6">0.9</ix:nonFraction> million and the increase in estimated amortization expense of approximately&#xa0;$<ix:nonFraction id="c56002496" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:AdjustmentForAmortization" scale="6">3.0</ix:nonFraction> million. The unaudited pro forma net income for the year ended&#xa0;<em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2016</em>&#xa0;includes the impact of new stock options and restricted stock units granted to employees of approximately $<ix:nonFraction id="c56002499" contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ShareBasedCompensation" scale="6">0.2</ix:nonFraction> million in connection with the acquisition, an increase in estimated depreciation expense of approximately $<ix:nonFraction id="c56002500" contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" sign="-" scale="6">0.6</ix:nonFraction> million and the increase in estimated amortization expense of approximately $<ix:nonFraction id="c56002501" contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AdjustmentForAmortization" scale="6">3.1</ix:nonFraction> million. The pro forma net income for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>and <em style="font-weight: inherit; font-style: normal;">2016</em> include the related tax effects of the adjustments. The pro forma information has been prepared for comparative purposes only and includes certain adjustments, as noted above. The adjustments are estimates and actual amounts <em style="font-weight: inherit; font-style: normal;"> may </em>differ materially from these estimates. They do <em style="font-weight: inherit; font-style: normal;">not</em> reflect the effect of costs or synergies that would have been expected to result from the integration of the RAPID acquisition. The pro forma information does <em style="font-weight: inherit; font-style: normal;">not</em> purport to be indicative of the results of operations that actually would have resulted had the RAPID acquisition occurred on <em style="font-weight: inherit; font-style: normal;"> January 1, 2016. </em>The Company&#x2019;s <em style="font-weight: inherit; font-style: normal;">2017</em> Consolidated Statements of Comprehensive Income include $<ix:nonFraction id="c56002506" contextRef="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" scale="6">3.6</ix:nonFraction> million of revenue and $<ix:nonFraction id="c56002507" contextRef="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" sign="-" scale="6">0.7</ix:nonFraction> million of net loss related to RAPID. The net loss was primarily driven by $<ix:nonFraction id="c56002508" contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_TitleOfIndividualAxis-EmployeesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:PaymentsToEmployees" scale="6">1.1</ix:nonFraction> million of bonus payments to RAPID employees as a result of the acquisition.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">62</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock" id="c1434376" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">6</em> &#x2013; Goodwill and Other Intangible Assets</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The changes in the carrying amount of goodwill for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfGoodwillTextBlock" id="c1434377" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002559" contextRef="i_2017-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">123,635</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002560" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">248</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002561" contextRef="i_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">123,883</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002562" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002563" contextRef="i_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">123,883</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002564" contextRef="i_2017-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">4,239</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002565" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002566" contextRef="i_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">4,239</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002567" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002568" contextRef="i_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">4,239</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002569" contextRef="i_2017-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:Goodwill" scale="3">630</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002570" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002571" contextRef="i_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:Goodwill" scale="3">630</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002572" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002573" contextRef="i_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:Goodwill" scale="3">630</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002574" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">128,504</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002575" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">248</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002576" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">128,752</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002577" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002578" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Goodwill" scale="3">128,752</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As described in Note <em style="font-weight: inherit; font-style: normal;">5</em> &#x2013;&#xa0;Business Combinations, the Company acquired RAPID in <em style="font-weight: inherit; font-style: normal;"> November 2017. </em>The fair value of the consideration paid exceeded the fair value of the assets acquired and liabilities assumed, which resulted in goodwill in the United States&#xa0;of $<ix:nonFraction id="c56002537" contextRef="i_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:Goodwill" scale="6">99.6</ix:nonFraction> million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>and a related working capital adjustment of $<ix:nonFraction id="c56002538" contextRef="d_2018-01-01_2018-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="prlb:BusinessCombinationWorkingCapitalAdjustment" scale="6">0.2</ix:nonFraction> million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Intangible assets other than goodwill for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> were as follows:&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="c1434378" escape="true">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted Average Useful Life</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Useful Life (in years)</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b><em style="font-weight: inherit; font-style: normal;">Remaining (in years)</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font-weight: inherit; font-style: normal;">Intangible Assets with finite lives:</em></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Marketing assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002609" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">930</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002610" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">527</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002611" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">403</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002612" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">930</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002613" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">434</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002614" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">496</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002616" format="ixt-sec:duryear">10.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002618" format="ixt-sec:duryear">4.3</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Non-compete agreement</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002619" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">270</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002620" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">222</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002621" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">48</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002622" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">270</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002623" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">206</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002624" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">64</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002625" format="ixt-sec:duryear">2.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002627" format="ixt-sec:duryear">5.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002628" format="ixt-sec:duryear">3.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade secrets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002629" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">250</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002630" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">250</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002631" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002632" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">250</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002633" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">233</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002634" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">17</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002636" format="ixt-sec:duryear">5.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002638" format="ixt-sec:duryear">0.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade names</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002639" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">1,080</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002640" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">1,080</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002641" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002642" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">1,080</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002643" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">540</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002644" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">540</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002646" format="ixt-sec:duryear">2.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002648" format="ixt-sec:duryear">0.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Software technology</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002649" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">13,229</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002650" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">2,275</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002651" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">10,954</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002652" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">12,229</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002653" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">997</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002654" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">11,232</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002656" format="ixt-sec:duryear">10.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002658" format="ixt-sec:duryear">8.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Customer relationships</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002659" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">10,070</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002660" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">4,106</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002661" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">5,964</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002662" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">10,070</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002663" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">2,569</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002664" contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">7,501</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002665" format="ixt-sec:duryear">6.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c56002667" format="ixt-sec:duryear">9.0</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c56002668" format="ixt-sec:duryear">3.8</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002669" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">25,829</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002670" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">8,460</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002671" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">17,369</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002672" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3">24,829</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002673" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3">4,979</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002674" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">19,850</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Amortization expense for intangible assets for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was $<ix:nonFraction id="c56002542" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AmortizationOfIntangibleAssets" scale="6">3.5</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002543" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AmortizationOfIntangibleAssets" scale="6">3.2</ix:nonFraction> million and $<ix:nonFraction id="c56002544" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:AmortizationOfIntangibleAssets" scale="6">0.5</ix:nonFraction> million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company acquired a software company in <em style="font-weight: inherit; font-style: normal;"> December 2017, </em>which was accounted for as an asset acquisition and resulted in an $<ix:nonFraction id="c56002545" contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="6">8.2</ix:nonFraction> million software technology intangible asset for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017. </em>The acquisition did <em style="font-weight: inherit; font-style: normal;">not</em> meet the definition of a business under ASC <em style="font-weight: inherit; font-style: normal;">805.</em> The asset acquisition included an additional $<ix:nonFraction id="c56002548" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="prlb:AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" scale="6">5.0</ix:nonFraction> million in contingent consideration to be recognized and paid upon completion of certain milestones&#xa0;over a <ix:nonNumeric contextRef="d_2017-01-01_2017-12-31" name="prlb:AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" id="c56002549" format="ixt-sec:durmonth">24</ix:nonNumeric>-month period. The completion of each milestone resulted in additional value to the software technology intangible asset. We recognized $<ix:nonFraction id="c56002550" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="prlb:AssetAcquisitionsContingentConsiderationLiability" scale="6">1.0</ix:nonFraction>&#xa0;million of the contingent consideration&#xa0;for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019. </em>We recognized $<ix:nonFraction id="c56002551" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="prlb:AssetAcquisitionsContingentConsiderationLiability" scale="6">4.0</ix:nonFraction> million of the contingent consideration&#xa0;for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="c1434379" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font-weight: inherit; font-style: normal;">Estimated Amortization Expense</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002680" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" scale="3">3,016</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002681" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" scale="3">3,016</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002682" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" scale="3">3,016</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002683" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" scale="3">2,813</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002684" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" scale="3">1,400</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Thereafter</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002685" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" scale="3">4,108</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002686" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3">17,369</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p><ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">63</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:FairValueDisclosuresTextBlock" id="c1434380" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">7</em> &#x2013; Fair Value Measurements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font-weight: inherit; font-style: normal;">820,</em><i> Fair Value Measuremen</i>t (ASC <em style="font-weight: inherit; font-style: normal;">820</em>), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC <em style="font-weight: inherit; font-style: normal;">820</em> also establishes a fair value hierarchy which requires classification based on observable and unobservable inputs when measuring fair value. There are <em style="font-weight: inherit; font-style: normal;">three</em> levels of inputs that <em style="font-weight: inherit; font-style: normal;"> may </em>be used to measure fair value:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</i><em style="font-weight: inherit; font-style: normal;">1&#x2014;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</i><em style="font-weight: inherit; font-style: normal;">2&#x2014;Observable</em> inputs other than Level&#xa0;<em style="font-weight: inherit; font-style: normal;">1</em> prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are <em style="font-weight: inherit; font-style: normal;">not</em> active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</i><em style="font-weight: inherit; font-style: normal;">3&#x2014;Unobservable</em> inputs that are supported by little or <em style="font-weight: inherit; font-style: normal;">no</em> market activity and that are significant to the fair value of the assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s cash equivalents measured at fair value as of <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#xa0;<em style="font-weight: inherit; font-style: normal;">1</em> inputs.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following tables summarizes financial assets as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> measured at fair value on a recurring basis:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock" id="c1434381" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002718" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">68,962</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002719" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002720" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002721" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">8,943</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002722" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002723" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002724" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">68,962</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002725" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002726" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002727" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">8,943</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002728" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002729" contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">64</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></div><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:InvestmentTextBlock" id="c1434382" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">8</em> &#x2013; Marketable Securities</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#x2019;s ability and intent to hold these securities to maturity. Information regarding the Company&#x2019;s short-term and long-term marketable securities as of <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018</em> is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:HeldToMaturitySecuritiesTextBlock" id="c7F5CFB05-6217-4EAF-A1B9-C28923DF194A" escape="true" continuedAt="c75D897F4-E4DB-454D-910C-3A1859458B6B">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002745" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">6,274</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002746" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002747" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">7</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002748" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">6,268</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002749" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">26,944</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002750" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">80</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002751" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">12</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002752" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">27,012</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002753" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">10,204</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002754" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">9</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002755" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">3</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002756" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">10,210</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Commercial paper</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002757" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">3,491</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002758" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002759" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" sign="-" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56002760" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">3,491</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002761" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">1,484</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002762" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">22</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002763" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" sign="-" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002764" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">1,506</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002765" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">48,397</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002766" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">112</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002767" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">22</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002768" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">48,487</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <ix:continuation id="c75D897F4-E4DB-454D-910C-3A1859458B6B">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002777" contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">16,843</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002778" contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002779" contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">88</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002780" contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">16,755</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002781" contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">31,769</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002782" contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002783" contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">96</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002784" contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">31,673</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002785" contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">17,509</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002786" contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56002787" contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">33</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002788" contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">17,477</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002789" contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">4,208</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002790" contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002791" contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">25</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002792" contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">4,183</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002793" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">70,329</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002794" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3">1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56002795" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3">242</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002796" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3">70,088</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:continuation>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Fair values for the U.S. government agency securities and corporate debt securities are primarily determined based on quoted market prices (Level <em style="font-weight: inherit; font-style: normal;">1</em>). Fair values for the U.S. municipal securities, commercial paper and certificates of deposit are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font-weight: inherit; font-style: normal;">2</em>).</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company tests for other than temporary losses on a quarterly basis and has considered the unrealized losses indicated above to be temporary in nature. The investment policy adopted by the Company dictates that only investments in quality, highly rated debt securities are permitted. Those unrealized losses displayed above are the result of macroeconomic factors and are indicative of neither the quality of the underlying security nor the issuer&#x2019;s ability to pay its debt. The Company intends, and has the ability, to hold the investments to maturity and recover the full principal.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Classification of marketable securities as current or non-current is based upon the security&#x2019;s maturity date as of the date of these financial statements.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">65</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. Actual maturities <em style="font-weight: inherit; font-style: normal;"> may </em>differ from contractual maturities because the issuers of the securities <em style="font-weight: inherit; font-style: normal;"> may </em>have the right to prepay obligations without prepayment penalties.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock" id="c1434385" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002799" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" scale="3">35,437</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002800" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" scale="3">12,960</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002801" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:HeldToMaturitySecurities" scale="3">48,397</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p><ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock" id="c1434386" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">9</em> &#x2013; Property and Equipment</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property and equipment consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="c1434387" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Land</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002814" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Land" scale="3">14,098</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002815" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:Land" scale="3">10,566</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Buildings and improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002816" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BuildingsAndImprovementsGross" scale="3">75,843</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002817" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:BuildingsAndImprovementsGross" scale="3">72,819</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Machinery and equipment</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002818" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MachineryAndEquipmentGross" scale="3">208,954</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002819" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:MachineryAndEquipmentGross" scale="3">185,416</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Computer hardware and software</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002820" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="prlb:ComputerHardwareAndSoftwareGross" scale="3">24,953</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002821" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="prlb:ComputerHardwareAndSoftwareGross" scale="3">22,323</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Leasehold improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002822" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LeaseholdImprovementsGross" scale="3">7,341</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002823" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:LeaseholdImprovementsGross" scale="3">7,330</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Construction in progress</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002824" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ConstructionInProgressGross" scale="3">54,313</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002825" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ConstructionInProgressGross" scale="3">25,279</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002826" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3">385,502</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002827" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3">323,733</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Accumulated depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002828" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3">121,790</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002829" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3">95,732</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Property and equipment, net</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002830" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">263,712</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002831" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">228,001</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;Depreciation expense for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was $<ix:nonFraction id="c56002807" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:Depreciation" scale="6">27.4</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002808" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:Depreciation" scale="6">23.5</ix:nonFraction> million and $<ix:nonFraction id="c56002809" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:Depreciation" scale="6">18.0</ix:nonFraction> million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:InventoryDisclosureTextBlock" id="c1434388" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">10</em> &#x2013; Inventory</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-cost method, which approximates <em style="font-weight: inherit; font-style: normal;">first</em>-in, <em style="font-weight: inherit; font-style: normal;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s inventory consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="c1434389" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Raw materials</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002840" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryRawMaterials" scale="3">9,818</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002841" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:InventoryRawMaterials" scale="3">9,560</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Work in process</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002842" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryWorkInProcess" scale="3">501</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002843" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryWorkInProcess" scale="3">792</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total inventory</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002844" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryGross" scale="3">10,319</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002845" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryGross" scale="3">10,352</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Allowance for obsolescence</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002846" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryValuationReserves" scale="3">244</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56002847" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryValuationReserves" scale="3">265</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002848" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryNet" scale="3">10,075</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002849" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:InventoryNet" scale="3">10,087</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">66</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:DebtDisclosureTextBlock" id="c1434390" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">11</em> &#x2013; Financing Obligations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company had <ix:nonFraction id="c56002851" contextRef="i_2019-12-31" unitRef="USD" format="ixt-sec:numwordsen" decimals="-3" name="us-gaap:LineOfCredit" scale="0">no</ix:nonFraction> financing obligations as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018.</em><i>&#xa0;</i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock" id="c1434391" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">12</em> &#x2013; Employee Benefit Plans</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company maintains a <em style="font-weight: inherit; font-style: normal;">401</em>(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over <ix:nonFraction id="c56002856" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="INF" name="prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" scale="0">20</ix:nonFraction> hours/week) employee becomes a participant after completing <span style="-sec-ix-hidden:c56002857">three</span> months of employment. Employees <em style="font-weight: inherit; font-style: normal;"> may </em>elect to contribute up to <ix:nonFraction id="c56002858" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="1" name="us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" scale="-2">50</ix:nonFraction> percent of regular gross pay, subject to federal law limits on the dollar amount that participants <em style="font-weight: inherit; font-style: normal;"> may </em>contribute to the plan, each calendar year. The Company matches part of the employee contributions and <em style="font-weight: inherit; font-style: normal;"> may </em>make a discretionary contribution to the plan. Total employer contributions were approximately $<ix:nonFraction id="c56002859" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">3.1</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002860" contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">2.7</ix:nonFraction> million and $<ix:nonFraction id="c56002861" contextRef="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">1.9</ix:nonFraction> million for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $<ix:nonFraction id="c56002865" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6">0.3</ix:nonFraction>&#xa0;million in each of the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="c1434392" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">13</em> &#x2013; Stock-Based Compensation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has <em style="font-weight: inherit; font-style: normal;">two</em> equity incentive plans: the <em style="font-weight: inherit; font-style: normal;">2000</em> Stock Option Plan (<em style="font-weight: inherit; font-style: normal;">2000</em> Plan) and the <em style="font-weight: inherit; font-style: normal;">2012</em> Long-Term Incentive Plan (<em style="font-weight: inherit; font-style: normal;">2012</em> Plan). Upon the adoption of the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan on <em style="font-weight: inherit; font-style: normal;"> February&#xa0;</em><em style="font-weight: inherit; font-style: normal;">21,</em> <em style="font-weight: inherit; font-style: normal;">2012,</em> all shares that were reserved but <em style="font-weight: inherit; font-style: normal;">not</em> issued under the <em style="font-weight: inherit; font-style: normal;">2000</em> Plan were assumed by the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan. <em style="font-weight: inherit; font-style: normal;">No</em> additional&#xa0;awards will be issued under the <em style="font-weight: inherit; font-style: normal;">2000</em> Plan. Under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, performance stock, stock units, other stock-based awards and cash incentive awards. Awards under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan have a maximum term of <em style="font-weight: inherit; font-style: normal;">ten</em> years from the date of grant. The compensation committee of the board of directors <em style="font-weight: inherit; font-style: normal;"> may </em>provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements, and the compensation committee will determine whether such measures have been achieved. The per share exercise price of stock options and SARs granted under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan generally <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be less than the fair market value of a share of our common stock on the date of the grant. Restricted stock is valued at fair market value on the date of grant.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b></b></p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">67</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s <em style="font-weight: inherit; font-style: normal;">2012</em> Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#x2019;s common stock at a discount through payroll deductions of up to <ix:nonFraction id="c56002890" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" scale="-2">15</ix:nonFraction> percent of their eligible compensation, subject to plan limitations. The ESPP provides for <span style="-sec-ix-hidden:c56002891">six</span>-month offering periods with a single purchase period, and at the end of each offering period, employees are able to purchase shares at <ix:nonFraction id="c56002892" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" scale="-2">85</ix:nonFraction> percent of the lower of the fair market value of the Company&#x2019;s common stock on the <em style="font-weight: inherit; font-style: normal;">first</em> trading day of the offering period or on the last trading day of the offering period. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718</em> using the component measurement approach and the Black-Scholes standard option pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Employees purchased <ix:nonFraction id="c56002895" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0">41,615</ix:nonFraction>&#xa0;and <ix:nonFraction id="c56002896" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0">33,562</ix:nonFraction> shares of common stock under the ESPP at an average exercise price of $<ix:nonFraction id="c56002897" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" scale="0">86.70</ix:nonFraction>&#xa0;and $<ix:nonFraction id="c56002898" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" scale="0">85.61</ix:nonFraction> during <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><ix:nonFraction id="c56002901" contextRef="i_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" scale="0">1,168,830</ix:nonFraction>&#xa0;shares remained available for future issuance under the ESPP.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines its stock-based compensation in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718,</em> which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#x2019;s best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include its expected term and&#xa0;stock price volatility.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#xa0;the Company's&#xa0;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#xa0;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does <em style="font-weight: inherit; font-style: normal;">not</em> anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of <span style="-sec-ix-hidden:c56002904">zero</span> in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock-based compensation expense for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" id="c1434393" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003009" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">9,591</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003010" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">10,113</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003011" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">7,954</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Employee stock purchase plan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002982" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,190</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002983" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">815</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002987" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">604</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002984" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">10,781</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002985" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">10,928</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002986" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">8,558</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002988" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">2,056</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002993" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,543</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002994" contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">970</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002989" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">2,632</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002992" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,942</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002995" contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,429</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002990" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,851</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56002991" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,517</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003002" contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">1,091</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002996" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">4,242</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56002999" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">5,926</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003000" contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">5,068</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002997" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">10,781</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56002998" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">10,928</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003001" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3">8,558</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
    <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" /> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">68</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Stock Options</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="c1434394" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003031" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.35</ix:nonFraction> - <ix:nonFraction id="c56003033" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.58</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003034" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.52</ix:nonFraction> - <ix:nonFraction id="c56003036" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">3.07</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003037" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.24</ix:nonFraction> - <ix:nonFraction id="c56003039" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.36</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003041" format="ixt-sec:duryear">6.25</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003044" format="ixt-sec:duryear">6.25</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003047" format="ixt-sec:duryear">6.5</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003049" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">42.52</ix:nonFraction> - <ix:nonFraction id="c56003051" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">42.74</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003052" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">41.68</ix:nonFraction> - <ix:nonFraction id="c56003054" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">42.22</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003055" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">42.68</ix:nonFraction> - <ix:nonFraction id="c56003057" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">44.68</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003059" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003062" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003065" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted average grant date fair value</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c56003068" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">47.84</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c56003071" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">50.08</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c56003074" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">32.26</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock option activity and the weighted average exercise price for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="c1434395" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Options</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Exercise Price</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003082" contextRef="i_2016-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">569,639</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003083" contextRef="i_2016-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">45.00</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003084" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0">60,100</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003085" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0">69.06</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003086" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0">187,313</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003087" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0">35.93</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003088" contextRef="d_2017-01-01_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0">43,371</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003089" contextRef="d_2017-01-01_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0">61.02</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003090" contextRef="i_2017-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">399,055</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003091" contextRef="i_2017-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">51.13</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003092" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0">36,600</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003093" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0">110.59</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003094" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0">155,765</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003095" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0">38.92</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003096" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0">27,274</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003097" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0">74.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003098" contextRef="i_2018-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">252,616</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003099" contextRef="i_2018-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">64.71</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003100" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0">53,708</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003101" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0">105.81</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003102" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0">16,079</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003103" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0">48.67</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003104" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0">13,979</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003105" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0">89.50</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003106" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">276,266</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003107" contextRef="i_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">72.38</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Exercisable at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003108" contextRef="i_2019-12-31" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" scale="0">152,423</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003109" contextRef="i_2019-12-31" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0">59.26</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The outstanding options have a term of <em style="font-weight: inherit; font-style: normal;">10</em> years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c56002919">four</span>- or <span style="-sec-ix-hidden:c56002920">five</span>-year period, beginning on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For directors, options generally become exercisable in full on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The total intrinsic value of options exercised during the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> was $<ix:nonFraction id="c56002927" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6">0.9</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002928" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6">13.0</ix:nonFraction> million and $<ix:nonFraction id="c56002929" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-6" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6">7.0</ix:nonFraction> million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">For options outstanding at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the weighted-average remaining contractual term was <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" id="c56002930" format="ixt-sec:duryear">5.5</ix:nonNumeric>&#xa0;years and the aggregate intrinsic value was $<ix:nonFraction id="c56002931" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" scale="6">8.6</ix:nonFraction>&#xa0;million. For options exercisable at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the weighted-average remaining contractual term was <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" id="c56002932" format="ixt-sec:duryear">3.6</ix:nonNumeric>&#xa0;years and the aggregate intrinsic value was $<ix:nonFraction id="c56002933" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" scale="6">6.5</ix:nonFraction>&#xa0;million. Refer to the table below for additional information.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">69</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes information about stock options outstanding at <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" id="c1434456" escape="true">
    <table class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="8" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="5" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      </tr>
      <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Outstanding</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Remaining Contractual Life</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Exercisable</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;"><ix:nonFraction id="c561782451" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0">7.76</ix:nonFraction> to <ix:nonFraction id="c56178245" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0">31.43</ix:nonFraction></em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c561782461" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">23,883</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c56178247" format="ixt-sec:duryear">1.98</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178248" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">25.04</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178249" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">23,883</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178250" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0">25.04</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;"><ix:nonFraction id="c561782521" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0">31.44</ix:nonFraction> to <ix:nonFraction id="c56178252" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0">66.87</ix:nonFraction></em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178253" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">125,022</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c56178254" format="ixt-sec:duryear">4.42</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178255" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">58.67</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178256" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">85,656</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178257" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0">58.81</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;"><ix:nonFraction id="c561782591" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0">66.88</ix:nonFraction> to <ix:nonFraction id="c56178259" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0">96.20</ix:nonFraction></em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178260" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">45,255</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c56178261" format="ixt-sec:duryear">4.49</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178262" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">70.98</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178263" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">33,445</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178264" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0">70.41</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;"><ix:nonFraction id="c561782661" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0">96.21</ix:nonFraction> to <ix:nonFraction id="c56178266" contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0">123.10</ix:nonFraction></em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178267" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0">82,106</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c56178268" format="ixt-sec:duryear">8.68</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178269" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0">107.79</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56178270" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">9,439</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56178271" contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0">110.36</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> there was $<ix:nonFraction id="c56002939" contextRef="i_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6">3.6</ix:nonFraction>&#xa0;million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c56002940" format="ixt-sec:duryear">2.6</ix:nonNumeric>&#xa0;years. The total fair value of options vested was $<ix:nonFraction id="c56002941" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6">1.5</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56002942" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6">1.5</ix:nonFraction> million and $<ix:nonFraction id="c56002943" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6">2.8</ix:nonFraction> million for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Restricted Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font-weight: inherit; font-style: normal;">2012</em> Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c56002949">four</span>- or <span style="-sec-ix-hidden:c56002950">five</span>-year period, beginning on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For directors, restrictions generally lapse in full on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes restricted stock activity for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em>&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" id="c1434397" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Restricted</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003152" contextRef="i_2016-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0">215,105</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003153" contextRef="i_2016-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">62.78</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003154" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">210,744</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003155" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">63.70</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003156" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0">60,102</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003157" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">63.60</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003158" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0">30,916</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003159" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">61.99</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003160" contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0">334,831</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003161" contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">63.29</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003162" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">106,855</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003163" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">115.41</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003164" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0">86,191</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003165" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">63.64</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003166" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0">31,574</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003167" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">68.67</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003168" contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0">323,921</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003169" contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">79.85</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003170" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">115,471</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003171" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">106.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003172" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0">92,597</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003173" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">77.25</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003174" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0">31,822</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003175" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">87.58</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003176" contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0">314,973</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003177" contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">89.55</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
    <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" /> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <em style="font-weight: inherit; font-style: normal;">70</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>there was $<ix:nonFraction id="c56002956" contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6">21.1</ix:nonFraction>&#xa0;million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c56002957" format="ixt-sec:duryear">2.6</ix:nonNumeric>&#xa0;years.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Performance Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c56002958">0</span> percent and <ix:nonFraction id="c56002959" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="1" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" scale="-2">150</ix:nonFraction> percent of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c56002960">three</span>-year performance period depending on the Company&#x2019;s performance in the final year of the performance period and the award recipient&#x2019;s continued employment.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes performance stock activity for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em>&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" id="c1434398" escape="true">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#xa0;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Performance</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003188" contextRef="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003189" contextRef="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003190" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">25,707</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003191" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">58.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003192" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" sign="-" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003193" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c56003194" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" sign="-" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003195" contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003196" contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">25,707</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003197" contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">58.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003198" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">20,006</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003199" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">105.75</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003200" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" sign="-" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003201" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003202" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" scale="0">6,427</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003203" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" scale="0">58.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c56003204" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" sign="-" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003205" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003206" contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">52,140</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003207" contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">76.54</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003208" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0">21,434</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003209" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0">104.99</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003210" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" sign="-" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003211" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:zerodash" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003212" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" sign="-" scale="0">61,816</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003213" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" scale="0">88.06</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003214" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0">2,375</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003215" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0">105.37</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003216" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0">9,383</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003217" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" format="ixt:numdotdecimal" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0">58.35</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>there was $<ix:nonFraction id="c56002963" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6">0.1</ix:nonFraction>&#xa0;million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c56002964" format="ixt-sec:duryear">0.1</ix:nonNumeric>&#xa0;years.&#xa0;The decrease in unrecognized stock-based compensation costs related to non-vested performance stock in <em style="font-weight: inherit; font-style: normal;">2019</em> when compared to <em style="font-weight: inherit; font-style: normal;">2018</em> is driven by a decrease in the number of shares expected to vest at the end of future performance periods.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Employee Stock Purchase Plan</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" id="c1434399" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="7" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td style="text-align: center;">&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003236" contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">1.59</ix:nonFraction> - <ix:nonFraction id="c56003238" contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.35</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003239" contextRef="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.06</ix:nonFraction> - <ix:nonFraction id="c56003241" contextRef="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">2.33</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003242" contextRef="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">0.97</ix:nonFraction> - <ix:nonFraction id="c56003244" contextRef="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2">1.48</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003246" format="ixt-sec:duryear">6.00</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2018-01-01_2018-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003249" format="ixt-sec:duryear">6.00</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2017-01-01_2017-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c56003252" format="ixt-sec:duryear">6.00</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003254" contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">42.63</ix:nonFraction> - <ix:nonFraction id="c56003256" contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">53.57</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003257" contextRef="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">31.50</ix:nonFraction> - <ix:nonFraction id="c56003259" contextRef="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">37.36</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003260" contextRef="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">24.49</ix:nonFraction> - <ix:nonFraction id="c56003262" contextRef="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember" unitRef="Pure" format="ixt:numdotdecimal" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2">34.51</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003264" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003267" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#xa0;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003270" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2">0</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
    <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" /> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGNUM" style="text-align: center; width: 100%">
      <em style="font-weight: inherit; font-style: normal;">71</em>
     </div>
     <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:LesseeOperatingLeasesTextBlock" id="c1434400" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">14</em> &#x2013; Leases</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s significant accounting policies are disclosed in Note <em style="font-weight: inherit; font-style: normal;">2</em> to the Consolidated Financial Statements included in its Annual Report on Form <em style="font-weight: inherit; font-style: normal;">10</em>-K for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019. </em>Significant changes to the Company&#x2019;s accounting policies as a result of adopting ASC <em style="font-weight: inherit; font-style: normal;">842</em> are discussed below.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for leases in accordance with ASC <em style="font-weight: inherit; font-style: normal;">842.</em> The Company adopted&#xa0;the standard as of&#xa0;<em style="font-weight: inherit; font-style: normal;"> January 1, 2019, </em>using the alternative transition method provided under ASC <em style="font-weight: inherit; font-style: normal;">842,</em> which allowed the Company to initially apply the new lease standard at the adoption date (the "effective date method"). Under the effective date method, comparative periods are presented in accordance with ASC <em style="font-weight: inherit; font-style: normal;">840</em> and do <em style="font-weight: inherit; font-style: normal;">not</em> include any retrospective adjustments to reflect the adoption of ASC <em style="font-weight: inherit; font-style: normal;">842.</em> The Company elected the package of practical expedients permitted under the transition guidance within the new standard. The Company did <em style="font-weight: inherit; font-style: normal;">not</em> elect the hindsight practical expedient. The Company recorded a net increase of $<ix:nonFraction id="c56003282" contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="6">13.1</ix:nonFraction> million to its operating lease assets and liabilities on <em style="font-weight: inherit; font-style: normal;"> January 1, 2019. </em>The adoption did <em style="font-weight: inherit; font-style: normal;">not</em> result in a cumulative-effect adjustment to the opening balance of retained earnings. The adoption of ASC <em style="font-weight: inherit; font-style: normal;">842</em> did <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated statements of comprehensive income, shareholders' equity or cash flows as of the adoption date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment. The leases have remaining lease terms of <span style="-sec-ix-hidden:c56003286">one</span> year to <ix:nonNumeric contextRef="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:LesseeOperatingLeaseTermOfContract" id="c56003287" format="ixt-sec:duryear">10</ix:nonNumeric> years. Leases with an initial term of <em style="font-weight: inherit; font-style: normal;">12</em> months or less are <em style="font-weight: inherit; font-style: normal;">not</em> recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms <em style="font-weight: inherit; font-style: normal;"> may </em>be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the operating lease liability does <em style="font-weight: inherit; font-style: normal;">not</em> include any options to extend or terminate leases. The Company currently has <ix:nonFraction id="c56003291" contextRef="i_2019-12-31" unitRef="Pure" format="ixt-sec:numwordsen" decimals="-3" name="prlb:LesseeFinancialLeaseLiabilityNumberOfLeases" scale="0">no</ix:nonFraction> finance leases.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#x2019;s leases do <em style="font-weight: inherit; font-style: normal;">not</em> provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental balance sheet information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" id="c1434401" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003302" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3">11,425</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003303" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3">3,340</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Long-term operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003304" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3">8,565</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003305" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseLiability" scale="3">11,905</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:ScheduleOfLeaseExpenseTableTextBlock" id="c4B482F31-0605-4F1C-96C2-B74197E0DBBE" escape="true" continuedAt="c3A884C25-E9EF-4C6E-9B5B-4A042B53875C">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Three Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003312" contextRef="d_2019-10-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseCost" scale="3">976</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003313" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OperatingLeaseCost" scale="3">3,960</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Variable lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003315" contextRef="d_2019-10-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:VariableLeaseCost" scale="3">228</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003316" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:VariableLeaseCost" scale="3">1,039</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003318" contextRef="d_2019-10-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LeaseCost" scale="3">1,204</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003319" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LeaseCost" scale="3">4,999</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">72</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Maturities of operating lease liabilities as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 (</em>in accordance with ASC <em style="font-weight: inherit; font-style: normal;">842</em>) were as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock" id="c1434404" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Operating Leases</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b><span style="text-decoration: underline; ">Year Ending December 31,</span></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003336" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3">4,034</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003337" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" scale="3">2,835</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003338" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" scale="3">2,634</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003339" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" scale="3">1,064</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003340" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" scale="3">498</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">After 2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003341" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" scale="3">1,613</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total future minimum lease payments</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003342" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" scale="3">12,678</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Less interest</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003343" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" scale="3">773</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Present value of lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003344" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingLeaseLiability" scale="3">11,905</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>we have <ix:nonFraction id="c56003295" contextRef="i_2019-12-31" unitRef="Pure" format="ixt-sec:numwordsen" decimals="-3" name="prlb:LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" scale="0">no</ix:nonFraction> operating leases that have <em style="font-weight: inherit; font-style: normal;">not</em> yet commenced.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Weighted average remaining lease term and&#xa0;discount rate&#xa0;was as follows:&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" id="c1434405" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="i_2019-12-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c56003346" format="ixt-sec:duryear">4.8</ix:nonNumeric></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c56003347" contextRef="i_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2">2.6</ix:nonFraction>%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental cash flow information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#xa0;</p>
   <ix:continuation id="c3A884C25-E9EF-4C6E-9B5B-4A042B53875C">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid for amounts included in the measurement of operating lease liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Operating cash flows from operating leases</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003330" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OperatingLeasePayments" scale="3">5,020</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Lease assets obtained in exchange for new operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003333" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3">1,921</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:continuation>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;"></p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">73</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:DisclosureOfReclassificationAmountTextBlock" id="c1434406" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">15</em> &#x2013; Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock" id="c1434407" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign currency translation adjustments</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003358" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">8,492</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003359" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">5,234</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003360" contextRef="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">10,753</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003361" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" scale="3">1,474</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003362" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" sign="-" scale="3">3,258</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003363" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" scale="3">5,519</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003364" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003365" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003366" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003367" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" scale="3">1,474</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003368" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" sign="-" scale="3">3,258</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003369" contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" scale="3">5,519</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56003370" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">7,018</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56003371" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">8,492</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56003372" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:StockholdersEquity" sign="-" scale="3">5,234</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p></ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:IncomeTaxDisclosureTextBlock" id="c1434408" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">16</em> &#x2013; Income Taxes</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> the Company recorded an income tax provision of $<ix:nonFraction id="c56003378" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:IncomeTaxExpenseBenefit" scale="6">17.5</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c56003379" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:IncomeTaxExpenseBenefit" scale="6">15.1</ix:nonFraction> million and $<ix:nonFraction id="c56003380" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:IncomeTaxExpenseBenefit" scale="6">22.7</ix:nonFraction> million, respectively. The effective income tax rate for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was <ix:nonFraction id="c56003385" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">21.6</ix:nonFraction>&#xa0;percent, <ix:nonFraction id="c56003386" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">16.4</ix:nonFraction> percent and <ix:nonFraction id="c56003387" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">30.4</ix:nonFraction> percent, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">74</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate increased by <ix:nonFraction id="c56003389" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" scale="-2">5.2</ix:nonFraction>% for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31,&#xa0;</em><em style="font-weight: inherit; font-style: normal;">2019</em> when compared&#xa0;to <em style="font-weight: inherit; font-style: normal;">2018</em> primarily due to a decrease in tax benefits from the vesting of restricted stock and exercise of stock options, an increase in the state tax provision, and an increase to valuation allowances for unrealizable deferred tax assets.&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#xa0;was enacted on <em style="font-weight: inherit; font-style: normal;"> December 22, 2017. </em>The Act reduced the&#xa0;U.S. federal corporate tax rate from <em style="font-weight: inherit; font-style: normal;">35%</em> to <ix:nonFraction id="c56003393" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2">21</ix:nonFraction>%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. <em style="font-weight: inherit; font-style: normal;">No</em> additional income taxes have been provided for any remaining undistributed foreign earnings <em style="font-weight: inherit; font-style: normal;">not</em> subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#xa0;</p>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" id="c1434409" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td style="width: 17px;">&#xa0;</td>
       <td style="width: 209px;">&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003434" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3">74,841</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003435" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3">81,893</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003436" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3">69,929</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003437" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3">6,352</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003438" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3">9,762</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003439" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3">4,506</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003440" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">81,193</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003441" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">91,655</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003442" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3">74,435</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of the provision for income taxes for the following periods are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="c1434410" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003450" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3">6,991</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003451" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" sign="-" scale="3">782</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003452" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3">17,808</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003453" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3">2,882</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003454" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3">2,078</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003455" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3">1,367</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003456" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3">1,544</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003457" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3">1,810</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003458" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3">2,215</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003460" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3">5,121</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003461" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3">11,325</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003462" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3">865</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003463" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3">269</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003464" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3">538</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003465" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3">193</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003466" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" sign="-" scale="3">809</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003467" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" sign="-" scale="3">430</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003468" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" sign="-" scale="3">1,918</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003469" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3">1,540</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003470" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3">528</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003471" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3">2,127</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003472" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">17,538</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003473" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">15,067</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003474" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3">22,657</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">75</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="c1434411" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003481" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2">21.0</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003482" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2">21.0</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003483" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2">35.0</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">State tax (net of federal benefit)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003484" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2">2.1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003485" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2">2.0</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003486" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2">1.7</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Share based compensation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003487" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" sign="-" scale="-2">0.5</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003488" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" sign="-" scale="-2">2.8</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003489" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" sign="-" scale="-2">0.8</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation allowance against deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003490" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2">1.4</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003491" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2">0.7</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003492" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2">2.9</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Research and development credit</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003493" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2">2.8</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003494" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2">2.5</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003495" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2">2.2</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign rate differential</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003496" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" sign="-" scale="-2">0.3</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003497" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" sign="-" scale="-2">0.1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003498" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" sign="-" scale="-2">1.9</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003499" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" scale="-2">1.1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003500" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" sign="-" scale="-2">0.1</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003501" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" scale="-2">0.9</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic manufacturing deduction</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003502" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:zerodash" decimals="0" name="us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" sign="-" scale="-2">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003503" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:zerodash" decimals="0" name="us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" sign="-" scale="-2">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003504" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" scale="-2">2.5</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Miscellaneous</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003505" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" sign="-" scale="-2">0.4</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003506" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" sign="-" scale="-2">0.5</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003507" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" sign="-" scale="-2">0.2</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Transition tax</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003508" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:zerodash" decimals="0" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" scale="-2">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003509" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" sign="-" scale="-2">0.8</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003510" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" scale="-2">3.2</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revaluation of deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003511" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:zerodash" decimals="0" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" scale="-2">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003512" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" sign="-" scale="-2">0.5</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003513" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" sign="-" scale="-2">5.7</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003514" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">21.6</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003515" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">16.4</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003516" contextRef="d_2017-01-01_2017-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2">30.4</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of deferred tax assets and liabilities are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="c1434412" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
       <td>&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax assets:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Accrued expenses</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003522" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" scale="3">1,362</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003523" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" scale="3">931</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56003524" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="prlb:DeferredTaxAssetsRightOfUseLeases" scale="3">3,337</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c56003525" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="prlb:DeferredTaxAssetsRightOfUseLeases" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Warrants and stock options</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003526" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3">3,325</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003527" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3">2,908</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003528" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets" scale="3">1,171</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003529" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets" scale="3">748</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Inventories</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003530" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsInventory" scale="3">169</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003531" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsInventory" scale="3">154</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003532" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsOther" scale="3">1,765</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003533" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsOther" scale="3">666</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net operating loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003534" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3">6,513</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003535" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3">6,605</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Less valuation allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003536" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3">8,248</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003537" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3">6,900</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003538" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsNet" scale="3">9,394</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003539" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxAssetsNet" scale="3">5,112</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Depreciation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003541" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3">26,750</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003542" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3">21,788</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003543" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3">5,590</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c56003544" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3">3,486</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003545" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesLeasingArrangements" scale="3">3,337</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c56003546" contextRef="i_2018-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesLeasingArrangements" sign="-" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003547" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3">35,677</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003548" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3">25,274</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56003549" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxLiabilities" scale="3">26,283</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c56003550" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DeferredTaxLiabilities" scale="3">20,162</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has recorded <em style="font-weight: inherit; font-style: normal;">no</em> U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of <em style="font-weight: inherit; font-style: normal;"> December&#xa0;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019.</em> Such amounts are intended to be reinvested outside of the United States indefinitely. It is <em style="font-weight: inherit; font-style: normal;">not</em> practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $<ix:nonFraction id="c56003401" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:UndistributedEarningsOfForeignSubsidiaries" scale="6">9.3</ix:nonFraction>&#xa0;million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the Company had estimated net operating loss carry forwards of $<ix:nonFraction id="c56003402" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:OperatingLossCarryforwards" scale="6">6.5</ix:nonFraction>&#xa0;million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to <span style="-sec-ix-hidden:c56003403">ten</span> years. The remaining Japan net operating losses begin to expire at various dates between <em style="font-weight: inherit; font-style: normal;">2020</em>&#xa0;and <em style="font-weight: inherit; font-style: normal;">2026.</em> The Company&#x2019;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses <em style="font-weight: inherit; font-style: normal;"> may </em>be carried forward without any time limitations but are limited to <em style="font-weight: inherit; font-style: normal;">&#x20ac;1</em> million, plus <ix:nonFraction id="c56003407" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" format="ixt:numdotdecimal" decimals="1" name="prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome" scale="-2">60</ix:nonFraction> percent&#xa0;of taxable income exceeding <em style="font-weight: inherit; font-style: normal;">&#x20ac;1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">76</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-<em style="font-weight: inherit; font-style: normal;">not</em> that a portion of the deferred tax assets will <em style="font-weight: inherit; font-style: normal;">not</em> be realized. The Company's valuation allowances of $<ix:nonFraction id="c56003412" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="6">8.2</ix:nonFraction>&#xa0;million and $<ix:nonFraction id="c56003413" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="6">6.9</ix:nonFraction> million at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in <em style="font-weight: inherit; font-style: normal;">2019.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is <em style="font-weight: inherit; font-style: normal;">no</em> longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before <em style="font-weight: inherit; font-style: normal;">2016.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has liabilities related to unrecognized tax benefits totaling $<ix:nonFraction id="c56003418" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:UnrecognizedTaxBenefits" scale="6">4.6</ix:nonFraction>&#xa0;million and $<ix:nonFraction id="c56003419" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-5" name="us-gaap:UnrecognizedTaxBenefits" scale="6">4.1</ix:nonFraction> million at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, that if recognized would result in a reduction of the Company&#x2019;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate. Interest and penalties were immaterial for each of the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" id="c1434413" escape="true">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003555" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" scale="3">4,096</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003556" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" scale="3">4,233</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of current year</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003557" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3">592</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003558" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3">593</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of prior years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003559" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:zerodash" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003560" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3">309</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Decrease related to expiration of statutes of limitations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003561" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3">90</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003562" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3">1,039</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at period end</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003563" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" scale="3">4,598</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003564" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" scale="3">4,096</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:LegalMattersAndContingenciesTextBlock" id="c1434414" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">17</em> &#x2013; Litigation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">From time to time, the Company <em style="font-weight: inherit; font-style: normal;"> may </em>be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#xa0;Although the results of litigation and claims cannot be predicted with certainty, the Company does <em style="font-weight: inherit; font-style: normal;">not</em> believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;<b>&#xa0;</b></p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b></b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SegmentReportingDisclosureTextBlock" id="c1434415" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">18</em> &#x2013; Segment Reporting</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#x2019;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#xa0;that the Company does <em style="font-weight: inherit; font-style: normal;">not</em> allocate directly to its operating segments.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue in the United States is derived from Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and <em style="font-weight: inherit; font-style: normal;">3D</em> Printing product lines. Revenue in&#xa0;Japan is derived from Injection Molding and CNC Machining product lines. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined and lathe-turned customer parts. <em style="font-weight: inherit; font-style: normal;">3D</em> Printing revenue consists of sales of <em style="font-weight: inherit; font-style: normal;">3D</em>-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">77</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The accounting policies of the reportable segments are the same as those described in&#xa0;Note <em style="font-weight: inherit; font-style: normal;">2</em>&#xa0;&#x2013;&#xa0;Summary of Significant Accounting Policies. Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are <em style="font-weight: inherit; font-style: normal;">not</em> allocated to business segments.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Beginning in <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue and income from operations by reportable segment are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" name="us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock" id="c1434416" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003585" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">360,205</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003586" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">350,535</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003587" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">263,086</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003588" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">82,805</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003589" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">80,889</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003590" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">70,154</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003591" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">15,718</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003592" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">14,172</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003593" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">11,250</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003594" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">458,728</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003595" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">445,596</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003596" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3">344,490</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:IncomeFromOperationsByGeographicAreaTableTextBlock" id="c1434417" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Income from Operations:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003604" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">108,594</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003605" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:OperatingIncomeLoss" scale="3">115,710</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003606" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">99,561</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003607" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">15,077</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003608" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">16,747</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003609" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">12,796</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Corporate Unallocated and Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003610" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" sign="-" scale="3">43,815</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003611" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" sign="-" scale="3">43,557</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c56003612" contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" sign="-" scale="3">40,131</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total income from operations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003613" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">79,856</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003614" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">88,898</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003615" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:OperatingIncomeLoss" scale="3">72,226</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock" id="c1434418" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003623" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">210,171</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003624" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">185,979</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003625" contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">125,308</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003626" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">45,019</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003627" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">34,577</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003628" contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">33,691</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003629" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">8,522</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003630" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">7,445</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003631" contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">7,441</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003632" contextRef="i_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">263,712</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003633" contextRef="i_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">228,001</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003634" contextRef="i_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3">166,440</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" id="c1434419" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Expenditures for additions to long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003642" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">45,123</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003643" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">78,762</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003644" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">20,370</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003645" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">14,743</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003646" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">7,576</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003647" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">11,704</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003648" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">2,364</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003649" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">766</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003650" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">561</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total expenditures for additions to long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003651" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-4" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">62,230</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003652" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">87,104</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003653" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3">32,635</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">78</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   </ix:exclude><hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock" id="c1434420" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Depreciation and Amortization:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003661" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">24,767</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003662" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">21,117</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003663" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">13,267</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003664" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">4,746</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003665" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">4,679</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c56003666" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">4,174</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003667" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">1,351</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003668" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">958</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c56003669" contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">1,033</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003670" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">30,864</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003671" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">26,754</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c56003672" contextRef="d_2017-01-01_2017-12-31" unitRef="USD" format="ixt:numdotdecimal" decimals="-3" name="us-gaap:DepreciationDepletionAndAmortization" scale="3">18,474</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td>
      </tr>
     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2019-01-01_2019-12-31" name="us-gaap:SubsequentEventsTextBlock" id="c1434421" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">19</em> &#x2013; Subsequent Events</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><em style="font-weight: inherit; font-style: normal;">None.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;">79</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9_changesinanddisagreements" title="item9_changesinanddisagreements" href="#"></a>Item 9. Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Not applicable.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9a_controlsandprocedures" title="item9a_controlsandprocedures" href="#"></a>Item 9A. Controls and Procedures</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Evaluation of Disclosure Controls and Procedures</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Our management, with the participation of our Chief Executive Officer and Chief Financial Officer, has evaluated the effectiveness of the design and operation of our disclosure controls and procedures (as defined in Rule 13a-15(e) under the Securities Exchange Act of 1934 (Exchange Act)) as of the end of the period covered by this report. Based upon that evaluation, the Chief Executive Officer and Chief Financial Officer have concluded that, as of the end of the period covered by this Annual Report on Form 10-K, our disclosure controls and procedures were effective and provided reasonable assurance that information required to be disclosed by us in the reports that we file or submit under the Exchange Act is recorded, processed, summarized and reported accurately and within the timeframes specified in the SEC&#x2019;s rules and forms and accumulated and communicated to our management, including our Chief Executive Officer and Chief Financial Officer, as appropriate to allow timely decisions regarding required disclosure.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Management&#x2019;s Annual Report on Internal Control Over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s management is responsible for establishing and maintaining an adequate system of internal control over financial reporting, as defined in the Exchange Act Rule 13a-15(f). Management conducted an assessment of the Company&#x2019;s internal control over financial reporting based on the framework established by the Committee of Sponsoring Organizations of the Treadway Commission in <i>Internal Control &#x2013; Integrated Framework </i>(2013 framework). Based on the assessment, management concluded that, as of December 31, 2019, the Company&#x2019;s internal control over financial reporting is effective. The Company&#x2019;s registered public accounting firm&#x2019;s attestation report on the Company&#x2019;s internal control over financial reporting is provided in Part II, Item 8 of this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Changes in Internal Control over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">There have been no changes in our internal control over financial reporting (as such term is defined in Rule 13a-15(f) under the Exchange Act) during the period covered by this report that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"><b>&#xa0;</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9b_otherinfo" title="item9b_otherinfo" href="#"></a>Item 9B. Other Information</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">None.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     80
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b><a id="part3" title="part3" href="#"></a>PART III</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item10_directorsexecofficers" title="item10_directorsexecofficers" href="#"></a>Item 10. Directors, Executive Officers and Corporate Governance</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The information required by this item with respect to Item 401 relating to executive officers is contained in Item&#xa0;1 of this Annual Report on Form 10-K under the heading &#x201c;Executive Officers of the Registrant&#x201d; and with respect to other information relating to our directors will be set forth in our 2020 Proxy Statement under the caption &#x201c;Proposal 1 &#x2014; Election of Directors,&#x201d; which will be filed no later than 120&#xa0;days after the end of the fiscal year covered by this Annual Report on Form 10-K, and is incorporated herein by reference.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The information required by this item under Item&#xa0;405 of Regulation S-K is incorporated herein by reference to the section titled &#x201c;Corporate Governance &#x2014; Section 16(a) Beneficial Ownership Reporting Compliance&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K. The information required by this item under Items&#xa0;407 (c)(3), (d)(4) and (d)(5) of Regulation S-K is incorporated herein by reference to the section titled &#x201c;Corporate Governance&#x201d; of our 2015 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We have adopted a Code of Ethics and Business Conduct that applies to all of our directors, officers and employees, including our principal executive officer and principal financial officer. The Code of Ethics and Business Conduct is available on our website at www.protolabs.com under the Investors Relations section. We plan to post to our website at the address described above any future amendments or waivers of our Code of Ethics and Business Conduct.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item11_executivecompensation" title="item11_executivecompensation" href="#"></a>Item 11. Executive Compensation</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information related to this item is incorporated herein by reference to the sections titled &#x201c;Compensation Discussion and Analysis,&#x201d; &#x201c;Corporate Governance &#x2014; Compensation Committee Interlocks and Insider Participation,&#x201d; and &#x201c;Compensation Committee Report&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item12_securityownership" title="item12_securityownership" href="#"></a>Item 12. Security Ownership of Certain Beneficial Owners and Management </b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information related to security ownership required by this item is incorporated herein by reference to the section titled &#x201c;Security Ownership of Certain Beneficial Owners and Management&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K. Information related to our equity compensation plans required by this item is incorporated herein by reference to the section titled &#x201c;Compensation Discussion and Analysis &#x2013; Information Regarding Equity-Based Compensation Plans&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item13_certianrelationships" title="item13_certianrelationships" href="#"></a>Item 13. Certain Relationships and Related Transactions, and Director Independence</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information required by this item is incorporated herein by reference to the sections titled &#x201c;Corporate Governance &#x2014; Certain Relationships and Related Party Transactions,&#x201d; and &#x201c;Corporate Governance &#x2014; Director Independence&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item14_principalaccoutantfees" title="item14_principalaccoutantfees" href="#"></a>Item 14. Principal Accountant Fees and Services</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information required by this item is incorporated herein by reference to the section titled &#x201c;Fees Paid to Independent Registered Public Accounting Firm&#x201d; of our 2020 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     81
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b><a id="part4" title="part4" href="#"></a>PART IV</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item15_exhibitsandfinancialstatementsch" title="item15_exhibitsandfinancialstatementsch" href="#"></a>Item 15. Exhibits and Financial Statement Schedules</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">(a) The following documents are filed as part of this report:</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">1. Consolidated Financial Statements</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">See Index to Consolidated Financial Statement at Item 8 herein.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">2. Financial Statement Schedules</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">Schedules not listed above have been omitted because the information required to be set forth therein is not applicable or is shown in the financial statement or notes herein.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">3. Exhibits</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">See the Exhibit Index immediately following the signature page of this Annual Report on Form 10-K.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM">
       82
     </div>
    </div>
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;border-bottom:solid 1px #000000;;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Exhibit Number</b></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;border-bottom:solid 1px #000000;;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Description of Exhibit</b></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">2.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(29)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774917019656/ex_100838.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Membership Interest Purchase Agreement, dated November 16, 2017, by and among Proto Labs, Inc., Rapid Manufacturing Group, LLC and the members listed therein. (Certain schedules and exhibits have been omitted in accordance with Item 601(b)(2) of Regulation S-K. A copy of any omitted schedule and/or exhibit will be furnished to the Securities and Exchange Commission upon request.)</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">3.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex32.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Third Amended and Restated Articles of Incorporation of Proto Labs, Inc.</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">3.2<sup style="vertical-align:top;line-height:120%;font-size:pt">(27)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774915010824/ex3-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Articles of Amendment to Third Amended and Restated Articles of Incorporation of Proto Labs, Inc. dated May 20, 2015</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">3.3<sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774916041414/ex3-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Second Amended and Restated By-Laws of Proto Labs, Inc, as amended through November 8, 2016.</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">4.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/0001193125-12-054357-index.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of certificate representing common shares of Proto Labs, Inc.</span></a></p> </td>
    </tr>
    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">4.2<sup style="vertical-align:top;line-height:120%;font-size:pt">(31)</sup></td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="ex_172513.htm" style="-sec-extract:exhibit;">Description of Securities of Registrant</a></td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(4)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774915019465/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">2012 Long-Term Incentive Plan, as amended as of August 5, 2015</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.2<sup style="vertical-align:top;line-height:120%;font-size:pt">(5)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1014.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Incentive Stock Option Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.3<sup style="vertical-align:top;line-height:120%;font-size:pt">(6)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1015.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (Directors) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.4<sup style="vertical-align:top;line-height:120%;font-size:pt">(7)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1016.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.5<sup style="vertical-align:top;line-height:120%;font-size:pt">(8)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1017.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.K. Employees) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.6<sup style="vertical-align:top;line-height:120%;font-size:pt">(9)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1018.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Employee Stock Purchase Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.7<sup style="vertical-align:top;line-height:120%;font-size:pt">(10)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512075642/d305138dex997.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Stock Subscription Warrant issued to John B. Tumelty</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.8<sup style="vertical-align:top;line-height:120%;font-size:pt">(11)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex107.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">2000 Stock Option Plan, as amended</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.9<sup style="vertical-align:top;line-height:120%;font-size:pt">(12)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex108.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Incentive Stock Option Agreement under 2000 Stock Option Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.10<sup style="vertical-align:top;line-height:120%;font-size:pt">(13)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex108.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (Directors) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.11<sup style="vertical-align:top;line-height:120%;font-size:pt">(14)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1010.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.12<sup style="vertical-align:top;line-height:120%;font-size:pt">(15)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1011.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.13<sup style="vertical-align:top;line-height:120%;font-size:pt">(16)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1012.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.K. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.14<sup style="vertical-align:top;line-height:120%;font-size:pt">(17)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511282025/d199869dex1019.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Amended and Restated Credit Agreement, dated as of September 30, 2011, between Proto Labs, Inc. and Wells Fargo Bank, N.A.</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.15<sup style="vertical-align:top;line-height:120%;font-size:pt">(18)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511282025/d199869dex1019.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Credit Agreement, dated November 27, 2017, by and among Proto Labs and Wells Fargo Bank, National Association</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.16<sup style="vertical-align:top;line-height:120%;font-size:pt">(19)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312513086525/d494950dex991.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of U.S. Severance Agreement</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.17<sup style="vertical-align:top;line-height:120%;font-size:pt">(20)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312513206525/d511353dex102.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of UK Severance Agreement</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.18<sup style="vertical-align:top;line-height:120%;font-size:pt">(21)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152135.htm" style="-sec-extract:exhibit;">Amended and Restated </a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152135.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Executive Employment Agreement, dated August 1, 2019, by and between Proto Labs, Inc. and Victoria M. Holt</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.19<sup style="vertical-align:top;line-height:120%;font-size:pt">(22)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001627/ex10-2.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Agreement under 2012 Long-Term Incentive Plan for the initial grant to Victoria M. Holt</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.20<sup style="vertical-align:top;line-height:120%;font-size:pt">(23)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001955/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (U.S. Employees)</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.21<sup style="vertical-align:top;line-height:120%;font-size:pt">(24)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001955/ex10-2.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (U.K. Employees)</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.22<sup style="vertical-align:top;line-height:120%;font-size:pt">(25)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914003200/ex99-6.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (Directors)</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.23<sup style="vertical-align:top;line-height:120%;font-size:pt">(26)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152136.htm" style="-sec-extract:exhibit;">Amended and Restated </a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152136.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Severance Agreement, dated August 1, 2019, by and between Proto Labs, Inc. and John A. Way</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.24<sup style="vertical-align:top;line-height:120%;font-size:pt">(28)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774917002759/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Performance Stock Unit Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.25<sup style="vertical-align:top;line-height:120%;font-size:pt">(30)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774918014168/ex_117988.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Deferred Stock Unit Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>
    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">10.26<sup style="vertical-align:top;line-height:120%;font-size:pt">(32)</sup>#</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919009830/ex_144745.htm" style="-sec-extract:exhibit;">Transition and Separation Agreement, dated May 8, 2019 by and between Proto Labs, Inc. and David M. Fein</a></td>
    </tr>
    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">10.27<sup style="vertical-align:top;line-height:120%;font-size:pt">(33)</sup>#</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152137.htm" style="-sec-extract:exhibit;">Form of Executive Severance Agreement</a></td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">21.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167007.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Subsidiaries of Proto Labs, Inc.</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">23.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167008.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Consent of Ernst &amp; Young LLP</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">24.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167009.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Powers of Attorney</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">31.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167011.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Certification of the Chief Executive Officer pursuant to Section 302 of the Sarbanes-Oxley Act</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">31.2</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167012.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Certification of the Chief Financial Officer pursuant to Section 302 of the Sarbanes-Oxley Act</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">32.1*</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_167013.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Certification of the Chief Executive Officer and the Chief Financial Officer pursuant to Section 906 of the Sarbanes-Oxley Act</span></a></p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.INS**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">XBRL Instance Document- the instance document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.SCH**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Inline XBRL Taxonomy Extension Schema Document</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.CAL**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Inline XBRL Taxonomy Extension Calculation Linkbase Document</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.DEF**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Inline XBRL Taxonomy Extension Definition Linkbase Document</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.LAB**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Inline XBRL Taxonomy Extension Label Linkbase Document</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.PRE**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Inline XBRL Taxonomy Extension Presentation Linkbase Document</p> </td>
    </tr>
    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">104</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;">Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)</td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     83
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="margin-left:1.4%;width:98.6%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 3.2 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 3.1 to the Company&#x2019;s Form 8-K, filed with the Commission on November 8, 2016.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 4.1 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(4)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 10-Q, filed with the Commission on November 3, 2015.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(5)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.14 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(6)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.15 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(7)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.16 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(8)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.17 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(9)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.18 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(10)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.7 to the Company&#x2019;s Registration Statement on Form S-8 (File No. 333-179651), filed with the Commission on February 23, 2012.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(11)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.7 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(12)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.8 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(13)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.9 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(14)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.10 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(15)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.11 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(16)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.12 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(17)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.19 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on October 26, 2011.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(18)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on December 1, 2017.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(19)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.1 to the Company&#x2019;s Form 8-K, filed with the Commission on March 1, 2013.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(20)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 10-Q, filed with the Commission on May 8, 2013.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(21)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on August 2, 2019.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(22)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on February 6, 2014.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(23)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on February 12, 2014.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(24)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on February 12, 2014.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(25)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.6 to the Company's Registration Statement on Form S-8 (file No. 333-194272), filed with the Commission on March 3, 2014.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(26)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on August 2, 2019.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(27)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 3.1 to the Company&#x2019;s Form 8-K, filed with the Commission on May 21, 2015.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(28)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on February 17, 2017.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(29)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 2.1 to the Company&#x2019;s Form 8-K, filed with the Commission on November 21, 2017.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(30)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company's Form 10-Q, filed with the Commission on August 1, 2018.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="margin: 0pt; text-align: right; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">(31)</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Filed herewith.</p> </td>
    </tr>
    <tr>
     <td style="width: 65px; text-align: right; vertical-align: top;">(32)</td>
     <td style="vertical-align: top; width: 1495px;">Incorporated by reference to Exhibit 10.1 to the Company's Form 8-K, filed with the Commission on May 14, 2019.</td>
    </tr>
    <tr>
     <td style="width: 65px; text-align: right; vertical-align: top;">(33)</td>
     <td style="vertical-align: top; width: 1495px;">Incorporated by reference to Exhibit 99.2 to the Company's Form 8-K, filed with the Commission on August 2, 2019.</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;">&#xa0;</td>
     <td style="vertical-align: top; width: 1495px;">&#xa0;</td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">#</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Indicates management contract or compensatory plan or arrangement.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">*</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">The certifications furnished in Exhibit 32.1 hereto are deemed to accompany this Annual Report on Form 10-K and will not be deemed &#x201c;filed&#x201d; for purposes of Section 18 of the Securities Exchange Act of 1934, as amended. Such certifications will not be deemed to be incorporated by reference into any filings under the Securities Act of 1933, as amended, or the Securities Exchange Act of 1934, as amended, except to the extent&#xa0;that the registrant specifically incorporates it by reference.</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">**</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Users of this data are advised that, pursuant to Rule 406T of Regulation S-T, these interactive data files are deemed not filed or part of a registration statement or prospectus for purposes of Sections 11 or 12 of the Securities Act of 1933 or Section 18 of the Securities Exchange Act of 1934 and otherwise are not subject to liability under these sections.</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     84
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>SIGNATURE</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Pursuant to the requirements of Section 13 or 15(d) of the Securities Exchange Act of 1934, the Registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, Inc.</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:9pt;">Date: February 26, 2020</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 26, 2020</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial and Accounting Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the Registrant in the capacities and on the dates indicated.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 26, 2020</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer and Director</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 26, 2020</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial and Accounting Officer)</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>&#xa0;</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Chairman of the Board of Directors:</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sven A. Wehrwein*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Directors:</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Archie C. Black*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sujeet Chand*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Moonhie Chin*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rainer Gawlick*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John B. Goodman*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Donald G. Krantz*</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">*Victoria M. Holt, by signing her name hereto, does hereby sign this document on behalf of each of the above named officers and directors of the registrant pursuant to powers of attorney duly executed by such persons and filed as an exhibit hereto.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 26, 2020</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>
   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">85</p>
 </body>
</html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-4.2
<SEQUENCE>2
<FILENAME>ex_172513.htm
<DESCRIPTION>EXHIBIT 4.2
<TEXT>
<html><head>
	<title>ex_172513.htm</title>

	<!-- Generated by ThunderDome Portal - 2/13/2020 6:31:20 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; padding:0in .1in;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:right;"><b>Exhibit 4</b><b>.2</b></p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:7.1%;">&nbsp;</td>
			<td style="vertical-align:top;width:46.4%;">&nbsp;</td>
			<td style="vertical-align:top;width:46.4%;">&nbsp;</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:center;"><u><b>DESCRIPTION </b></u><u><b>OF THE REGISTRANT&#8217;S SECURITIES</b></u></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:center;"><u><b>REGISTERED PURSUANT TO SECTION 12 OF THE</b></u></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:center;"><u><b>SECURITIES EXCHANGE ACT OF 1934</b></u></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;">As of December 31, 2019, Proto Labs, Inc. (the &#8220;Company&#8221;) had common stock registered under Section 12(b) of the Securities Exchange Act of 1934 and listed on The New York Stock Exchange.</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:center;"><b>Description of Capital Stock</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;"><b>&nbsp;</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;"><i><b>General</b></i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;"><i><b>&nbsp;</b></i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;">The summary of the general terms and provisions of the capital stock of the Company set forth below does not purport to be complete and is subject to and qualified by reference to the Company&#8217;s Third Amended and Restated Articles of Incorporation (the &#8220;Articles&#8221;) and Second Amended and Restated By-Laws (the &#8220;By-laws,&#8221; and together with the Articles, the &#8220;Charter Documents&#8221;), each of which is incorporated herein by reference and attached as an exhibit to the Company&#8217;s most recent Annual Report on Form 10-K filed with the Securities and Exchange Commission. For additional information, please read the Company&#8217;s Charter Documents and the applicable provisions of the Minnesota Business Corporation Act.</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;"><i><b>&nbsp;</b></i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.5pt;text-align:left;"><i><b>Common Stock</b></i></p>

<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">The aggregate number of shares that the Company has authority to issue is 160,000,000. The shares are classified in two classes, consisting of 10,000,000 shares of preferred stock, par value $0.001 per share, and 150,000,000 shares of common stock, par value $0.001 per share. The Board of Directors is authorized to establish one or more series of preferred stock, setting forth the designation of each such series, and fixing the relative rights and preferences of each such series.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:44.85pt;margin-right:0pt;margin-top:0pt;text-align:left;"><i>Voting Rights</i></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">Each share of common stock entitles the holder to one vote with respect to each matter presented to the Company&#8217;s shareholders on which the holders of common stock are entitled to vote.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;"><i>No Cumulative Voting</i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;"><i>&nbsp;</i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;">No holder of common stock, or of any class or classes or of a series or series thereof, is entitled to cumulate votes for the election of directors of the Company.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:left;text-indent:24.5pt;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;">&nbsp;<i>No Preemptive Rights</i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;"><i>&nbsp;</i></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:justify;text-indent:36pt;">Holders of common stock do not have any preemptive right to become subscribers or purchasers of additional shares of any class of the Company&#8217;s capital stock.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:44.85pt;margin-right:0pt;margin-top:0pt;text-align:left;"><i>Dividend Rights</i></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">Subject to preferences that may be applicable to any outstanding series of preferred stock, the holders of the Company&#8217;s common stock will receive ratably any dividends declared by the board of directors out of funds legally available for the payment of dividends. The board of directors may, at its discretion, modify or repeal the dividend policy.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:44.85pt;margin-right:0pt;margin-top:0pt;text-align:left;"><i>Liquidation Rights</i></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">In the event of the Company&#8217;s liquidation, dissolution or winding-up, the holders of common stock are entitled to share ratably in all assets remaining after payment of liabilities, subject to prior distribution rights of preferred stock, if any, then outstanding.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:9pt;"><i><b>Preferred Stock</b></i></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">As of December 31, 2019, there were no shares of preferred stock outstanding. The board has broad discretionary authority with respect to the rights of any new series of preferred stock and may establish the following with respect to the shares to be included in each series, without any vote or action of the shareholders:</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:middle;width:4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:92%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">the number of shares;</p>
			</td>
		</tr>

</table>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:middle;width:4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:92%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">the designations, preferences and relative rights, including voting rights, dividend rights, conversion rights, redemption privileges and liquidation preferences; and</p>
			</td>
		</tr>

</table>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:middle;width:4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:92%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">any qualifications, limitations or restrictions.</p>
			</td>
		</tr>

</table>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
<div class="PGNUM" style="text-align: center; width: 100%">&nbsp;</div>

<hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000">
<div class="PGHDR" style="text-align: left; width: 100%">&nbsp;</div>
</div>

<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">We believe that the ability of the board to issue one or more series of preferred stock will provide us with flexibility in structuring possible future financings and acquisitions, and in meeting other corporate needs that may arise.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">The board may authorize, without shareholder approval, the issuance of preferred stock with voting and conversion rights that could adversely affect the voting power and other rights of holders of common stock.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Potential Anti-takeover Effects of Minnesota Law and </b><b>the Company&#8217;s </b><b>Charter Documents</b></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">Certain provisions of Charter Documents may make it less likely that someone would acquire voting control of the Company without the board&#8217;s consent. These provisions may delay, deter or prevent tender offers or takeover attempts that shareholders may believe are in their best interests, including tender offers or attempts that might allow shareholders to receive premiums over the market price of their common stock. Among other things, the Company&#8217;s Charter Documents:</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="width:42pt;">&nbsp;</td>
			<td style="width:18pt;vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">&#9679;</p>
			</td>
			<td style="vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">allow the board of directors to, at any time, and without shareholder approval, issue one or more new series of preferred stock;</p>
			</td>
		</tr>

</table>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="width:42pt;">&nbsp;</td>
			<td style="width:18pt;vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">&#9679;</p>
			</td>
			<td style="vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">provide that any action required or permitted to be taken by the shareholders of the company may be effected only at a meeting of shareholders and prohibits shareholder action by less than unanimous written consent in lieu of a meeting; and</p>
			</td>
		</tr>

</table>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="width:42pt;">&nbsp;</td>
			<td style="width:18pt;vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">&#9679;</p>
			</td>
			<td style="vertical-align:top;">
			<p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;background-color:#FFFFFF;margin-bottom:0pt;font-size:10pt;">specify procedures for director nominations by shareholders and submission of other proposals for consideration at stockholder meetings.</p>
			</td>
		</tr>

</table>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;"><i><b>&nbsp;</b></i></p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">Several provisions of Minnesota law may deter potential changes in control of us that some shareholders may view as beneficial or that may provide a premium on the Company&#8217;s stock price. Under Section&nbsp;302A.673 of the Minnesota Business Corporation Act, a shareholder that beneficially owns 10% or more of the voting power of the outstanding shares (an interested shareholder) generally cannot consummate a business combination with the Company, or any subsidiary of the Company, within four years following the time the interested shareholder crosses the 10% stock ownership threshold, unless the business combination is approved by a committee of disinterested members of the board before the time the interested shareholder crosses the 10% stock ownership threshold.</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>

<p style="background-color:#FFFFFF;font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:24.5pt;">Section&nbsp;302A.675 of the Minnesota Business Corporation Act generally prohibits an offeror from acquiring the Company&#8217;s shares within two years following the offeror&#8217;s last purchase of the Company&#8217;s shares pursuant to a takeover offer with respect to that class, unless the Company&#8217;s shareholders may sell their shares to the offeror upon substantially equivalent terms as those provided in the earlier takeover offer. This provision does not apply if the share acquisition is approved by a committee of disinterested members of the board before the purchase of any shares by the offeror pursuant to the earlier takeover offer.</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;"><b>Transfer Agent and Registrar</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;"><b>&nbsp;</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;">The transfer agent and registrar for the Company&#8217;s common stock is Broadridge Corporate Issuer Solutions.</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;"><b>New York Stock Exchange Listing</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;"><b>&nbsp;</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:7.5pt;margin-top:0pt;text-align:left;">The Company&#8217;s common stock is quoted on The New York Stock Exchange under the symbol &#8220;PRLB.&#8221;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21.1
<SEQUENCE>3
<FILENAME>ex_167007.htm
<DESCRIPTION>EXHIBIT 21.1
<TEXT>
<html><head>
	<title>ex_167007.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 9:28:17 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="margin-bottom: 0px; text-align: right; margin-top: 0px">&nbsp;</p>

<p style="margin: 0pt; text-align: left;"><b>Exhibit 21.1</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>SUBSIDIARIES OF THE REGISTRANT</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 18pt;">All of the Company&#8217;s subsidiaries listed below are wholly owned.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table cellpadding="0pt" cellspacing="0pt" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; margin-right: 0pt;">

		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: bottom; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><u><b>Name</b></u></p>
			</td>
			<td style="vertical-align: bottom; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><u><b>Jurisdiction of Incorporation or Organization</b></u></p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">PL-US International LLC</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United States</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rapid&nbsp;Management Group LLC</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United States</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Rapid Sheet Metal LLC (RSM)</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">United States</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rapid Manufacturing LLC (RM)</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">United States</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, Ltd.</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United Kingdom</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">PL International Holdings UK Ltd</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United Kingdom</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">PL Euro Services Limited</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">United Kingdom</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Proto Labs GmbH</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Germany</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Proto Labs Tooling GmbH</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Germany</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, G.K.</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Japan</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;">&nbsp;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-23.1
<SEQUENCE>4
<FILENAME>ex_167008.htm
<DESCRIPTION>EXHIBIT 23.1
<TEXT>
<html><head>
	<title>ex_167008.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 5:44:41 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; padding:0in .1in;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 23.1</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Consent of Independent Registered Public Accounting Firm </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">We consent to the incorporation by reference in the Registration Statements (Form S-8 Nos. 333-179651, 333-194272 and 333-202486) pertaining to the 2012 Long-Term Incentive Plan, Employee Stock Purchase Plan, 2000 Stock Option Plan, and Stock Subscription Warrant of Proto Labs, Inc. of our reports dated February 26, 2020, with respect to the consolidated financial statements of Proto Labs, Inc., and the effectiveness of internal control over financial reporting of Proto labs, Inc., included in this Annual Report (Form 10-K) for the year ended December 31, 2019.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">/s/ Ernst &amp; Young LLP</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Minneapolis, Minnesota</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">February 26, 2020</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-24.1
<SEQUENCE>5
<FILENAME>ex_167009.htm
<DESCRIPTION>EXHIBIT 24.1
<TEXT>
<html><head>
	<title>ex_167009.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 9:27:43 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 24.1</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>PROTO LABS, INC.</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>POWER OF ATTORNEY OF DIRECTOR AND/OR OFFICER</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Each of the undersigned directors and/or officers of Proto Labs, Inc., a Minnesota corporation (the &#8220;<u>Company</u>&#8221;), does hereby make, constitute and appoint Victoria M. Holt and John A. Way, and each of them, either of whom may act without the joinder of the other, the undersigned&#8217;s true and lawful attorney-in-fact and agent, with full power of substitution, for the undersigned and in the undersigned&#8217;s name, place and stead, to sign on his or her behalf, individually and in the capacities stated below, the Annual Report on Form 10-K for the year ended December 31, 2019 under the Securities Exchange Act of 1934, as amended, with any amendment or amendments thereto, with all exhibits thereto and other supporting documents, with the U.S. Securities and Exchange Commission, granting unto said attorneys-in-fact, and each of them, full power and authority to do and perform any and all acts necessary or incidental to the performance and execution of the powers herein expressly granted.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">IN WITNESS WHEREOF, each of the undersigned directors and/or officers of Proto Labs, Inc. has hereunto set his or her hand this 26th&nbsp;day of February, 2020.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&nbsp;</p>

<table cellpadding="0" cellspacing="0" style="margin-left: 18pt; width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">

		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Sven Wehrwein</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chairman</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sven A. Wehrwein</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President, Chief Executive Officer and Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: bottom; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Archie C. Black</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Archie C. Black</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Rainer Gawlick</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rainer Gawlick</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John B. Goodman</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John B. Goodman</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Donald G. Krantz</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Donald G. Krantz</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Sujeet Chand</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sujeet Chand</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>
		<tr>
			<td style="width: 47%; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">/s/ Moonhie Chin</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Director</td>
		</tr>
		<tr>
			<td style="width: 47%; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt; vertical-align: top;">Moonhie Chin</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>6
<FILENAME>ex_167011.htm
<DESCRIPTION>EXHIBIT 31.1
<TEXT>
<html><head>
	<title>ex_167011.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 7:40:45 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt; cursor: auto;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:right;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 31.1</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SECURITIES EXCHANGE ACT OF 1934, </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>AS ADOPTED PURSUANT TO SECTION 302 OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, Victoria M. Holt, certify that:</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">1. I have reviewed this Annual Report on Form 10-K of Proto Labs, Inc.;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">2. Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">3. Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">4. The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">5. The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:49.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: February 26, 2020</p>
			</td>
			<td style="vertical-align:top;width:3.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:49.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:49.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:49.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>7
<FILENAME>ex_167012.htm
<DESCRIPTION>EXHIBIT 31.2
<TEXT>
<html><head>
	<title>ex_167012.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 7:40:58 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 31.2</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SECURITIES EXCHANGE ACT OF 1934, </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>AS ADOPTED PURSUANT TO SECTION 302 OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SARBANES-OXLEY ACT OF 2002</b>&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, John A. Way, certify that:</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">1. I have reviewed this Annual Report on Form 10-K of Proto Labs, Inc.;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">2. Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">3. Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">4. The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">5. The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:50%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: February 26, 2020</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:47%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:50%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:50%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:50%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial Officer)</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>8
<FILENAME>ex_167013.htm
<DESCRIPTION>EXHIBIT 32.1
<TEXT>
<html><head>
	<title>ex_167013.htm</title>
	<!-- Generated by ThunderDome Portal - 1/22/2020 7:41:22 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 32.1</b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>CERTIFICATION OF CHIEF EXECUTIVE OFFICER AND CHIEF FINANCIAL OFFICER </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>PURSUANT TO </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>18 U.S.C. SECTION 1350, </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>AS ADOPTED PURSUANT TO </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002 </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, Victoria M. Holt, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Annual Report of Proto Labs, Inc. on Form 10-K for the fiscal year ended December 31, 2019 fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Annual Report on Form 10-K fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Date: February 26, 2020</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Name:</p>
			</td>
			<td style="vertical-align: bottom; width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Title:</p>
			</td>
			<td style="vertical-align: bottom; width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, John A. Way, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Annual Report of Proto Labs, Inc. on Form 10-K for the fiscal year ended December 31, 2019 fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Annual Report on Form 10-K fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Date: February 26, 2020</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Name:</p>
			</td>
			<td style="vertical-align: bottom; width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Title:</p>
			</td>
			<td style="vertical-align: bottom; width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>9
<FILENAME>prlb-20191231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 01:17AM UTC 2020-02-26--><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2017-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2017-01-31" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2018-01-31" xmlns:invest="http://xbrl.sec.gov/invest/2013-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2011-01-31" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:prlb="http://www.protolabs.com/20191231" xmlns:sic="http://xbrl.sec.gov/sic/2011-01-31" xmlns:srt="http://fasb.org/srt/2019-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:us-gaap="http://fasb.org/us-gaap/2019-01-31" xmlns:us-types="http://fasb.org/us-types/2019-01-31" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.protolabs.com/20191231">
  <xsd:import namespace="http://xbrl.sec.gov/country/2017-01-31" schemaLocation="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/invest/2013-01-31" schemaLocation="http://xbrl.sec.gov/invest/2013/invest-2013-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/naics/2011-01-31" schemaLocation="http://xbrl.sec.gov/naics/2011/naics-2011-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/stpr/2018-01-31" schemaLocation="https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/sic/2011-01-31" schemaLocation="http://xbrl.sec.gov/sic/2011/sic-2011-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/exch/2018-01-31" schemaLocation="https://xbrl.sec.gov/exch/2018/exch-2018-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/currency/2017-01-31" schemaLocation="http://xbrl.sec.gov/currency/2017/currency-2017-01-31.xsd"/>
  <xsd:annotation>
    <xsd:appinfo>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20191231_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20191231_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20191231_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20191231_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="statement-document-and-entity-information" roleURI="http://www.protolabs.com/20191231/role/statement-document-and-entity-information">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">000 - Document - Document And Entity Information</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets" roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">001 - Statement - Consolidated Balance Sheets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-parentheticals" roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">002 - Statement - Consolidated Balance Sheets (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-comprehensive-income" roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">003 - Statement - Consolidated Statements of Comprehensive Income</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-shareholders-equity" roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">004 - Statement - Consolidated Statements of Shareholders' Equity</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-cash-flows" roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">005 - Statement - Consolidated Statements of Cash Flows</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-1-nature-of-business" roleURI="http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">006 - Disclosure - Note 1 - Nature of Business</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies-" roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">007 - Disclosure - Note 2 - Summary of Significant Accounting Policies</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-revenue" roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">008 - Disclosure - Note 3 - Revenue</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-net-income-per-common-share" roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">009 - Disclosure - Note 4 - Net Income Per Common Share</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-business-combinations" roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">010 - Disclosure - Note 5 - Business Combinations</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">011 - Disclosure - Note 6 - Goodwill and Other Intangible Assets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-fair-value-measurements" roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">012 - Disclosure - Note 7 - Fair Value Measurements</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-marketable-securities" roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">013 - Disclosure - Note 8 - Marketable Securities</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-property-and-equipment" roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">014 - Disclosure - Note 9 - Property and Equipment</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-inventory" roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">015 - Disclosure - Note 10 - Inventory</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-financing-obligations" roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">016 - Disclosure - Note 11 - Financing Obligations</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-employee-benefit-plans" roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">017 - Disclosure - Note 12 - Employee Benefit Plans</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">018 - Disclosure - Note 13 - Stock-based Compensation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">019 - Disclosure - Note 14 - Leases</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-accumulated-other-comprehensive-loss" roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">020 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">021 - Disclosure - Note 16 - Income Taxes</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-litigation" roleURI="http://www.protolabs.com/20191231/role/statement-note-17-litigation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">022 - Disclosure - Note 17 - Litigation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">023 - Disclosure - Note 18 - Segment Reporting</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-19-subsequent-events" roleURI="http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">024 - Disclosure - Note 19 - Subsequent Events</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-significant-accounting-policies-policies" roleURI="http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">025 - Disclosure - Significant Accounting Policies (Policies)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-revenue-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">026 - Disclosure - Note 3 - Revenue (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-net-income-per-common-share-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">027 - Disclosure - Note 4 - Net Income Per Common Share (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-business-combinations-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">028 - Disclosure - Note 5 - Business Combinations (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">029 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-fair-value-measurements-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">030 - Disclosure - Note 7 - Fair Value Measurements (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-marketable-securities-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">031 - Disclosure - Note 8 - Marketable Securities (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-property-and-equipment-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">032 - Disclosure - Note 9 - Property and Equipment (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-inventory-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">033 - Disclosure - Note 10 - Inventory (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">034 - Disclosure - Note 13 - Stock-based Compensation (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">035 - Disclosure - Note 14 - Leases (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-accumulated-other-comprehensive-loss-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">036 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">037 - Disclosure - Note 16 - Income Taxes (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-tables" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">038 - Disclosure - Note 18 - Segment Reporting (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">039 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-revenue-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">040 - Disclosure - Note 3 - Revenue (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-revenue-disaggregation-of-revenue-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">041 - Disclosure - Note 3 - Revenue - Disaggregation of Revenue (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">042 - Disclosure - Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-business-combinations-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">043 - Disclosure - Note 5 - Business Combinations (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">044 - Disclosure - Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-business-combinations-unaudited-pro-forma-information-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">045 - Disclosure - Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">046 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">047 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">048 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">049 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">050 - Disclosure - Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">051 - Disclosure - Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">052 - Disclosure - Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-property-and-equipment-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">053 - Disclosure - Note 9 - Property and Equipment (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-property-and-equipment-components-of-property-and-equipment-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">054 - Disclosure - Note 9 - Property and Equipment - Components of Property and Equipment (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-inventory-inventory-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">055 - Disclosure - Note 10 - Inventory - Inventory (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-financing-obligations-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">056 - Disclosure - Note 11 - Financing Obligations (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-employee-benefit-plans-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">057 - Disclosure - Note 12 - Employee Benefit Plans (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">058 - Disclosure - Note 13 - Stock-based Compensation (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">059 - Disclosure - Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">060 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-stock-option-activity-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">061 - Disclosure - Note 13 - Stock-based Compensation - Stock Option Activity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">062 - Disclosure - Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-restricted-stock-options-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">063 - Disclosure - Note 13 - Stock-based Compensation - Restricted Stock Options (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-performance-stock-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">064 - Disclosure - Note 13 - Stock-based Compensation - Performance Stock (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">065 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">066 - Disclosure - Note 14 - Leases (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-balance-sheet-information-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">067 - Disclosure - Note 14 - Leases - Balance Sheet Information (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-lease-expense-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">068 - Disclosure - Note 14 - Leases - Lease Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-maturities-of-operating-lease-liabilities-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">069 - Disclosure - Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">070 - Disclosure - Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">071 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-details-textual" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">072 - Disclosure - Note 16 - Income Taxes (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">073 - Disclosure - Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">074 - Disclosure - Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">075 - Disclosure - Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">076 - Disclosure - Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">077 - Disclosure - Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">078 - Disclosure - Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-income-from-operations-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">079 - Disclosure - Note 18 - Segment Reporting - Income From Operations (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">080 - Disclosure - Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">081 - Disclosure - Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-segment-reporting-depreciation-and-amortization-details" roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">082 - Disclosure - Note 18 - Segment Reporting - Depreciation and Amortization (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:element id="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" name="AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_AssetAcquisitionsContingentConsiderationLiability" name="AssetAcquisitionsContingentConsiderationLiability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" name="AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" name="BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" name="BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessCombinationWorkingCapitalAdjustment" name="BusinessCombinationWorkingCapitalAdjustment" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_CNCMachiningFirstcutMember" name="CNCMachiningFirstcutMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ComputerHardwareAndSoftwareGross" name="ComputerHardwareAndSoftwareGross" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="prlb_CorporateUnallocatedAndJapanSegmentMember" name="CorporateUnallocatedAndJapanSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_DeferredTaxAssetsRightOfUseLeases" name="DeferredTaxAssetsRightOfUseLeases" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" name="DepreciationAndAmortizationByGeographicRegionTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ESPPMember" name="ESPPMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" name="EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" name="EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" name="EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" name="EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EmployeeStockPurchasePlanOfferingPeriod" name="EmployeeStockPurchasePlanOfferingPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" name="EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_EmployeesMember" name="EmployeesMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_EuropeSegmentMember" name="EuropeSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeFourMember" name="ExercisePriceRangeFourMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeOneMember" name="ExercisePriceRangeOneMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeThreeMember" name="ExercisePriceRangeThreeMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeTwoMember" name="ExercisePriceRangeTwoMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" name="ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" name="IncomeFromOperationsByGeographicAreaTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_InjectionMoldingProtomoldMember" name="InjectionMoldingProtomoldMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_JapanSegmentMember" name="JapanSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" name="LesseeFinancialLeaseLiabilityNumberOfLeases" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" name="LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" name="MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" name="MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OfficeFurnitureAndEquipmentMember" name="OfficeFurnitureAndEquipmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" name="OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_OperatingLossCarryforwardsExpirationPeriod" name="OperatingLossCarryforwardsExpirationPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" name="OperatingLossCarryforwardsPercentageOfTaxableIncome" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OtherProductsMember" name="OtherProductsMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="prlb_RapidMember" name="RapidMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ScheduleOfLeaseExpenseTableTextBlock" name="ScheduleOfLeaseExpenseTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" name="ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" name="ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" nillable="true" substitutionGroup="xbrli:item" type="num:perShareItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_SheetMetalMember" name="SheetMetalMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_StockOptionsRestrictedStockAndOtherMember" name="StockOptionsRestrictedStockAndOtherMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_The401KRetirementPlanMember" name="The401KRetirementPlanMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ThreeDPrintingFinelineMember" name="ThreeDPrintingFinelineMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_UnitedStatesSegmentMember" name="UnitedStatesSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-10-inventory-inventory-details" name="statement-statement-note-10-inventory-inventory-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-10-inventory-tables" name="statement-statement-note-10-inventory-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" name="statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" name="statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" name="statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" name="statement-statement-note-13-stockbased-compensation-performance-stock-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" name="statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" name="statement-statement-note-13-stockbased-compensation-stock-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" name="statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-stockbased-compensation-tables" name="statement-statement-note-13-stockbased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-leases-balance-sheet-information-details" name="statement-statement-note-14-leases-balance-sheet-information-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-leases-lease-expense-details" name="statement-statement-note-14-leases-lease-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" name="statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-leases-tables" name="statement-statement-note-14-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" name="statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" name="statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" name="statement-statement-note-15-accumulated-other-comprehensive-loss-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" name="statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" name="statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" name="statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" name="statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" name="statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-16-income-taxes-tables" name="statement-statement-note-16-income-taxes-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" name="statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" name="statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" name="statement-statement-note-18-segment-reporting-income-from-operations-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" name="statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" name="statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-18-segment-reporting-tables" name="statement-statement-note-18-segment-reporting-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" name="statement-statement-note-3-revenue-disaggregation-of-revenue-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-revenue-tables" name="statement-statement-note-3-revenue-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" name="statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-4-net-income-per-common-share-tables" name="statement-statement-note-4-net-income-per-common-share-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" name="statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-business-combinations-tables" name="statement-statement-note-5-business-combinations-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" name="statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" name="statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" name="statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" name="statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" name="statement-statement-note-6-goodwill-and-other-intangible-assets-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" name="statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-7-fair-value-measurements-tables" name="statement-statement-note-7-fair-value-measurements-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" name="statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" name="statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-marketable-securities-tables" name="statement-statement-note-8-marketable-securities-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" name="statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-property-and-equipment-tables" name="statement-statement-note-9-property-and-equipment-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-significant-accounting-policies-policies" name="statement-statement-significant-accounting-policies-policies" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
</xsd:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>10
<FILENAME>prlb-20191231_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 01:18AM UTC 2020-02-26--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_CashAcquiredFromAcquisition" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-lease-expense-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetImpairmentCharges" xlink:label="us-gaap_AssetImpairmentCharges" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_AssetImpairmentCharges" xlink:type="arc"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="arc"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="12" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc"/>
    <link:calculationArc order="13" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_GainLossOnSaleOfBusiness" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfLongTermDebt" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:to="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_LeaseholdImprovementsGross" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="prlb_ComputerHardwareAndSoftwareGross" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_MachineryAndEquipmentGross" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_BuildingsAndImprovementsGross" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_Land" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_ConstructionInProgressGross" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:href="prlb-20191231.xsd#statement-note-10-inventory-inventory-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="arc"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="arc"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20191231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsFairValueDisclosure" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>11
<FILENAME>prlb-20191231_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 01:17AM UTC 2020-02-26--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events" xlink:href="prlb-20191231.xsd#statement-note-19-subsequent-events" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SubsequentEventsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-17-litigation" xlink:href="prlb-20191231.xsd#statement-note-17-litigation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-17-litigation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory" xlink:href="prlb-20191231.xsd#statement-note-10-inventory" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InvestmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business" xlink:href="prlb-20191231.xsd#statement-note-1-nature-of-business" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-document-and-entity-information" xlink:href="prlb-20191231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentAnnualReport" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityWellKnownSeasonedIssuer" xlink:type="arc"/>
    <link:definitionArc order="24" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityVoluntaryFilers" xlink:type="arc"/>
    <link:definitionArc order="25" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:definitionArc order="26" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:definitionArc order="27" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:definitionArc order="28" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:definitionArc order="29" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:definitionArc order="30" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:definitionArc order="31" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityPublicFloat" xlink:type="arc"/>
    <link:definitionArc order="32" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="prlb-20191231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:href="prlb-20191231.xsd#statement-note-2-summary-of-significant-accounting-policies-" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue" xlink:href="prlb-20191231.xsd#statement-note-3-revenue" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeesMember" xlink:label="prlb_EmployeesMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="prlb_EmployeesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations" xlink:href="prlb-20191231.xsd#statement-note-11-financing-obligations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans" xlink:href="prlb-20191231.xsd#statement-note-12-employee-benefit-plans" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_ForeignPlanMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases" xlink:href="prlb-20191231.xsd#statement-note-14-leases" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeAxis" xlink:label="us-gaap_LeaseArrangementTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeasesTextBlock" xlink:label="us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseArrangementTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseArrangementTypeDomain" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies" xlink:href="prlb-20191231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_MarketableSecuritiesPolicy" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_BusinessCombinationsPolicy" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables" xlink:href="prlb-20191231.xsd#statement-note-10-inventory-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-tables" xlink:href="prlb-20191231.xsd#statement-note-14-leases-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="prlb-20191231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CapitalizedComputerSoftwareNet" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdvertisingExpense" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeesMember" xlink:label="prlb_EmployeesMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentForAmortization" xlink:label="us-gaap_AdjustmentForAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToEmployees" xlink:label="us-gaap_PaymentsToEmployees" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="prlb_EmployeesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentForAmortization" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToEmployees" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AmortizationOfIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Depreciation" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual" xlink:href="prlb-20191231.xsd#statement-note-11-financing-obligations-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCredit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual" xlink:href="prlb-20191231.xsd#statement-note-12-employee-benefit-plans-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_ForeignPlanMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual" xlink:href="prlb-20191231.xsd#statement-note-14-leases-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeAxis" xlink:label="us-gaap_LeaseArrangementTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseArrangementTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseArrangementTypeDomain" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLossCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_CashAcquiredFromAcquisition" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_InjectionMoldingProtomoldMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_CNCMachiningFirstcutMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_ThreeDPrintingFinelineMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_SheetMetalMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_OtherProductsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-lease-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenuesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetImpairmentCharges" xlink:label="us-gaap_AssetImpairmentCharges" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AssetImpairmentCharges" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_GainLossOnSaleOfBusiness" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLongTermDebt" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaid" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeOneMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeTwoMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeThreeMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeFourMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeSecretsMember" xlink:label="us-gaap_TradeSecretsMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TradeSecretsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancialInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_CorporateDebtSecuritiesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CashAndCashEquivalentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:to="us-gaap_BankTimeDepositsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Land" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BuildingsAndImprovementsGross" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MachineryAndEquipmentGross" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_ComputerHardwareAndSoftwareGross" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseholdImprovementsGross" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ConstructionInProgressGross" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:href="prlb-20191231.xsd#statement-note-10-inventory-inventory-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_CostOfSalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_SellingAndMarketingExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20191231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-shareholders-equity" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>12
<FILENAME>prlb-20191231_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 01:17AM UTC 2020-02-26--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel" xlink:type="simple"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DocumentAndEntityInformation" xlink:label="prlb_DocumentAndEntityInformation" xlink:type="locator"/>
    <link:label xlink:label="prlb_DocumentAndEntityInformation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document And Entity Information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DocumentAndEntityInformation" xlink:to="prlb_DocumentAndEntityInformation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected dividend yield</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Dividend Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:label xlink:label="prlb_NoteToFinancialStatementDetailsTextual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note To Financial Statement Details Textual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="prlb_NoteToFinancialStatementDetailsTextual-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-significant-accounting-policies-policies" xlink:label="prlb_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-significant-accounting-policies-policies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-significant-accounting-policies-policies" xlink:to="prlb_statement-statement-significant-accounting-policies-policies-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-3-revenue-tables" xlink:label="prlb_statement-statement-note-3-revenue-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-revenue-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-revenue-tables" xlink:to="prlb_statement-statement-note-3-revenue-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Net Income Per Common Share</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:to="prlb_statement-statement-note-4-net-income-per-common-share-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Risk-free interest rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-tables" xlink:label="prlb_statement-statement-note-5-business-combinations-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-business-combinations-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Business Combinations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-business-combinations-tables" xlink:to="prlb_statement-statement-note-5-business-combinations-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Other Intangible Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:to="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:label="prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-fair-value-measurements-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Fair Value Measurements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:to="prlb_statement-statement-note-7-fair-value-measurements-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-tables" xlink:label="prlb_statement-statement-note-8-marketable-securities-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-marketable-securities-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Marketable Securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-marketable-securities-tables" xlink:to="prlb_statement-statement-note-8-marketable-securities-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-9-property-and-equipment-tables" xlink:label="prlb_statement-statement-note-9-property-and-equipment-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-property-and-equipment-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Property and Equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-property-and-equipment-tables" xlink:to="prlb_statement-statement-note-9-property-and-equipment-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The weighted average purchase price of shares purchased through the Employee Stock Purchase Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:to="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-10-inventory-tables" xlink:label="prlb_statement-statement-note-10-inventory-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-10-inventory-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Inventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-10-inventory-tables" xlink:to="prlb_statement-statement-note-10-inventory-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EmployeeStockPurchasePlanOfferingPeriod</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Stock Purchase Plan, Offering Period</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-tables" xlink:label="prlb_statement-statement-note-14-leases-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-leases-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-leases-tables" xlink:to="prlb_statement-statement-note-14-leases-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Accumulated Other Comprehensive Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:to="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-tables" xlink:label="prlb_statement-statement-note-16-income-taxes-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-tables" xlink:to="prlb_statement-statement-note-16-income-taxes-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected volatility</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-tables" xlink:label="prlb_statement-statement-note-18-segment-reporting-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-tables" xlink:to="prlb_statement-statement-note-18-segment-reporting-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesCurrent</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Revenue - Disaggregation of Revenue (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:to="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:to="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:label="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:to="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Expected life (months) (Year)</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Assets acquired:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:label="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:to="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:to="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:to="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationConsiderationTransferred1</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Consideration Transferred, Total</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total purchase consideration</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:to="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:label="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:to="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinitelivedIntangibleAssetsAcquired1</link:label>
    <link:label xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite-lived Intangible Assets Acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:label="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:to="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">US States and Political Subdivisions Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife</link:label>
    <link:label xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Acquired Finite-lived Intangible Assets, Weighted Average Useful Life</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:label="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:to="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:label="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Property and Equipment - Components of Property and Equipment (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:to="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-10-inventory-inventory-details" xlink:label="prlb_statement-statement-note-10-inventory-inventory-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-10-inventory-inventory-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Inventory - Inventory (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-10-inventory-inventory-details" xlink:to="prlb_statement-statement-note-10-inventory-inventory-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Stock Option Activity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Restricted Stock Options (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from maturities of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Performance Stock (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:to="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Forfeited, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Forfeited, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:label="prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-leases-balance-sheet-information-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Leases - Balance Sheet Information (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:to="prlb_statement-statement-note-14-leases-balance-sheet-information-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Restricted stock, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Restricted stock, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-lease-expense-details" xlink:label="prlb_statement-statement-note-14-leases-lease-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-leases-lease-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Leases - Lease Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-leases-lease-expense-details" xlink:to="prlb_statement-statement-note-14-leases-lease-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Forfeited (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:label="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:to="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:label="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:to="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign currency translation adjustments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commercial Paper, Not Included with Cash and Cash Equivalents [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Restricted stock (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Restricted stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:to="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:label="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:to="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:to="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">US Government Agencies Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:to="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:to="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CorporateDebtSecuritiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Corporate Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CorporateDebtSecuritiesMember" xlink:to="us-gaap_CorporateDebtSecuritiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Cost by Plan [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:to="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:to="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Nonvested Performance-based Units Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:to="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting - Income From Operations (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:to="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:to="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:to="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Segment Reporting - Depreciation and Amortization (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:to="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossNetOfTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net current-period other comprehensive (loss) income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatements" xlink:label="prlb_NotesToFinancialStatements" xlink:type="locator"/>
    <link:label xlink:label="prlb_NotesToFinancialStatements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NotesToFinancialStatements" xlink:to="prlb_NotesToFinancialStatements-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:label xlink:label="prlb_NotesToFinancialStatementsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="prlb_NotesToFinancialStatementsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireOtherInvestments</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of other assets and investments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireOtherInvestments" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Pro Forma Information, Revenue of Acquiree since Acquisition Date, Actual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:to="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Pro Forma Information, Earnings or Loss of Acquiree since Acquisition Date, Actual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:to="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested in Period, Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive (loss) income before reclassifications</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Pro Forma Information [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amounts reclassified from accumulated other comprehensive income (loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:to="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionsProFormaRevenue</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireHeldToMaturitySecurities</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Options outstanding, weighted-average exercise price (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Options outstanding, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cancelled, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinancialInstrumentAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_FinancialInstrumentAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Goodwill [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfGoodwillTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercised, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DomesticPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Domestic Plan [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DomesticPlanMember" xlink:to="us-gaap_DomesticPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Plan [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignPlanMember" xlink:to="us-gaap_ForeignPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedIncomeTaxesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanSponsorLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Sponsor Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeasesTextBlock" xlink:label="us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeasesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Operating Leases [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeasesTextBlock" xlink:to="us-gaap_LesseeOperatingLeasesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Sponsor Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccountsPayableCurrent</link:label>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsPayableCurrent" xlink:to="us-gaap_AccountsPayableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options outstanding, vested and expected to vest, number outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Options outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Options outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_RetirementPlanTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PolicyTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_PolicyTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeSecretsMember" xlink:label="us-gaap_TradeSecretsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TradeSecretsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade Secrets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TradeSecretsMember" xlink:to="us-gaap_TradeSecretsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TradeNamesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade Names [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TradeNamesMember" xlink:to="us-gaap_TradeNamesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of property, equipment and other capital assets</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Expenditures for additions to long-lived assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Employee stock options and other (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NoncompeteAgreementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Noncompete Agreements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NoncompeteAgreementsMember" xlink:to="us-gaap_NoncompeteAgreementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shares used to compute net income per share:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketing-Related Intangible Assets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share based compensation</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Qualified subsidiary election.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental cash flow disclosure</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Assets</link:label>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Assets-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OtherProductsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Products [Member]</link:label>
    <link:label xlink:label="prlb_OtherProductsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents other products.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OtherProductsMember" xlink:to="prlb_OtherProductsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_The401KRetirementPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">401(k) Retirement Plan [Member]</link:label>
    <link:label xlink:label="prlb_The401KRetirementPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">A company sponsored 401(k) defined contribution plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_The401KRetirementPlanMember" xlink:to="prlb_The401KRetirementPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CustomerRelationshipsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer Relationships [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CustomerRelationshipsMember" xlink:to="us-gaap_CustomerRelationshipsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InvestmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investment [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InvestmentTextBlock" xlink:to="us-gaap_InvestmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:type="locator"/>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Percentage of Taxable Income</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the operating loss carryforwards percentage of taxable income limit.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:to="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_OperatingLossCarryforwardsExpirationPeriod</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Expiration Period</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The expiration period of operating loss carryforwards.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:to="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Matters and Contingencies [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:to="us-gaap_LegalMattersAndContingenciesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer Software, Intangible Asset [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance change, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance change (in shares)</link:label>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AwardTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_AwardTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_NetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accumulated Amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total estimated amortization expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restricted Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedStockMember" xlink:to="us-gaap_RestrictedStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock Options, Restricted Stock, and Other [Member]</link:label>
    <link:label xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Equity awards of stock options, restricted stock, and equity instruments not otherwise classified.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:to="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PerformanceSharesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance Shares [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PerformanceSharesMember" xlink:to="us-gaap_PerformanceSharesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeStockOptionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeStockOptionMember" xlink:to="us-gaap_EmployeeStockOptionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAcquiredDuringPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill acquired during the period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAcquiredDuringPeriod" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Combination Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_DeferredTaxAssetsRightOfUseLeases</link:label>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Leases</link:label>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accumulated depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-lived assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill, Ending Balance</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Goodwill, balance as of the beginning of the period</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Goodwill, balance as of the end of the period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Goodwill" xlink:to="us-gaap_Goodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BankTimeDepositsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Bank Time Deposits [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BankTimeDepositsMember" xlink:to="us-gaap_BankTimeDepositsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentGross</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MachineryAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Machinery and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MachineryAndEquipmentGross" xlink:to="us-gaap_MachineryAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConstructionInProgressGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Construction in progress</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConstructionInProgressGross" xlink:to="us-gaap_ConstructionInProgressGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseholdImprovementsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Leasehold improvements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseholdImprovementsGross" xlink:to="us-gaap_LeaseholdImprovementsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:type="locator"/>
    <link:label xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases</link:label>
    <link:label xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Operating Lease, Lease Not yet Commenced, Number of Leases</link:label>
    <link:label xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of the lessee's operating leases which have not yet commenced.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:to="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Land-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Land" xlink:to="us-gaap_Land-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]</link:label>
    <link:label xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to office space, manufacturing facilities, and certain company vehicles and equipment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BuildingsAndImprovementsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Buildings and improvements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BuildingsAndImprovementsGross" xlink:to="us-gaap_BuildingsAndImprovementsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Operating Lease Assets and Liabilities [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of operating lease assets and liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:to="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Lease Expense [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of lease expenses incurred.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:to="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Lease Terms and Discount Rates [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of the weighted average remaining lease terms and discount rates.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:to="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amortized Cost</link:label>
    <link:label xlink:label="us-gaap_HeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income per share:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Earnings Per Share [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareTextBlock" xlink:to="us-gaap_EarningsPerShareTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInOtherOperatingLiabilities</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued liabilities and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:type="locator"/>
    <link:label xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_LesseeFinancialLeaseLiabilityNumberOfLeases</link:label>
    <link:label xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Financial Lease, Liability, Number of Leases</link:label>
    <link:label xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of the lessee's finance leases.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:to="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="locator"/>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:type="locator"/>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_AssetAcquisitionsContingentConsiderationLiability</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Asset Acquisitions, Contingent Consideration, Liability</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of liability recognized arising from contingent consideration in an asset acquisition.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="locator"/>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Provision for income taxes</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Income Tax Expense (Benefit), Total</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingExpenses</link:label>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_OperatingExpenses-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount</link:label>
    <link:label xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Contribution Plan, Employer Discretionary Contribution Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:to="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GeneralAndAdministrativeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">General and administrative</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GeneralAndAdministrativeExpense" xlink:to="us-gaap_GeneralAndAdministrativeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent</link:label>
    <link:label xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:to="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Due in one year or less</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Due after one year through five years</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, beginning of period</link:label>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, end of period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss</link:label>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Unrealized Losses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unrealized Gains</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Allocated share-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Money market mutual funds</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_AmendmentFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentFlag" xlink:to="dei_AmendmentFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive income</link:label>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Comprehensive income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:label xlink:label="dei_CityAreaCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CityAreaCode" xlink:to="dei_CityAreaCode-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UseOfEstimates-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Use of Estimates, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UseOfEstimates" xlink:to="us-gaap_UseOfEstimates-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GainLossOnSaleOfBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GainLossOnSaleOfBusiness</link:label>
    <link:label xlink:label="us-gaap_GainLossOnSaleOfBusiness-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Gain on sale of businesses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GainLossOnSaleOfBusiness" xlink:to="us-gaap_GainLossOnSaleOfBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance (in shares)</link:label>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesOutstanding" xlink:to="us-gaap_CommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesOutstanding" xlink:to="us-gaap_PreferredStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_CurrentFiscalYearEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CurrentFiscalYearEndDate" xlink:to="dei_CurrentFiscalYearEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableLeaseCost" xlink:to="us-gaap_VariableLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LeaseCost</link:label>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_LeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeAxis" xlink:label="us-gaap_LeaseArrangementTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseArrangementTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Arrangement, Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseArrangementTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Arrangement, Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseArrangementTypeDomain" xlink:to="us-gaap_LeaseArrangementTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:label xlink:label="country_JP-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">JAPAN</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_JP" xlink:to="country_JP-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Discount Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalPeriodFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalPeriodFocus" xlink:to="dei_DocumentFiscalPeriodFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseCost" xlink:to="us-gaap_OperatingLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalYearFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalYearFocus" xlink:to="dei_DocumentFiscalYearFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConsolidationPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConsolidationPolicyTextBlock" xlink:to="us-gaap_ConsolidationPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentPeriodEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodEndDate" xlink:to="dei_DocumentPeriodEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease assets obtained in exchange for new operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Remaining Lease Term (Years) (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFileNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFileNumber" xlink:to="dei_EntityFileNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityEmergingGrowthCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityEmergingGrowthCompany" xlink:to="dei_EntityEmergingGrowthCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentType-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentType" xlink:to="dei_DocumentType-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetImpairmentCharges" xlink:label="us-gaap_AssetImpairmentCharges" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetImpairmentCharges-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Loss on impairment of assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetImpairmentCharges" xlink:to="us-gaap_AssetImpairmentCharges-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:label xlink:label="dei_EntitySmallBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Small Business</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntitySmallBusiness" xlink:to="dei_EntitySmallBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityShellCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Shell Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityShellCompany" xlink:to="dei_EntityShellCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityPublicFloat-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Public Float</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityPublicFloat" xlink:to="dei_EntityPublicFloat-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFilerCategory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Filer Category</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFilerCategory" xlink:to="dei_EntityFilerCategory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCurrentReportingStatus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCurrentReportingStatus" xlink:to="dei_EntityCurrentReportingStatus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityVoluntaryFilers-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityVoluntaryFilers" xlink:to="dei_EntityVoluntaryFilers-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationAcquisitionRelatedCosts</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Acquisition Related Costs</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityWellKnownSeasonedIssuer-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityWellKnownSeasonedIssuer" xlink:to="dei_EntityWellKnownSeasonedIssuer-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CapitalizedComputerSoftwareNet</link:label>
    <link:label xlink:label="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Capitalized Computer Software, Net, Ending Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CapitalizedComputerSoftwareNet" xlink:to="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsReceivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Increase (Decrease) in Accounts Receivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accounts receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Securities, Held-to-maturity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:to="us-gaap_HeldToMaturitySecuritiesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityTaxIdentificationNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityTaxIdentificationNumber" xlink:to="dei_EntityTaxIdentificationNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCentralIndexKey-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCentralIndexKey" xlink:to="dei_EntityCentralIndexKey-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityRegistrantName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityRegistrantName" xlink:to="dei_EntityRegistrantName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityDomain" xlink:to="dei_EntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:label xlink:label="dei_LegalEntityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Entity [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LegalEntityAxis" xlink:to="dei_LegalEntityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressAddressLine1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine1" xlink:to="dei_EntityAddressAddressLine1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AmortizationOfIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amortization of Intangible Assets, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AmortizationOfIntangibleAssets" xlink:to="us-gaap_AmortizationOfIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressCityOrTown-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCityOrTown" xlink:to="dei_EntityAddressCityOrTown-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressPostalZipCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressPostalZipCode" xlink:to="dei_EntityAddressPostalZipCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressStateOrProvince-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressStateOrProvince" xlink:to="dei_EntityAddressStateOrProvince-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod</link:label>
    <link:label xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Acquisition, Goodwill, Expected Tax Deductible Period</link:label>
    <link:label xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The period of time in which goodwill arising from a business combination that is expected to be deductible for tax purposes.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:to="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_RapidMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Rapid [Member]</link:label>
    <link:label xlink:label="prlb_RapidMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the information pertaining to the acquisition of Rapid Manufacturing Group, Inc.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_RapidMember" xlink:to="prlb_RapidMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCommonStockSharesOutstanding" xlink:to="dei_EntityCommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of Common Stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of Common Stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdvertisingExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AdvertisingExpense</link:label>
    <link:label xlink:label="us-gaap_AdvertisingExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Advertising Expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdvertisingExpense" xlink:to="us-gaap_AdvertisingExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeesMember" xlink:label="prlb_EmployeesMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Employees [Member]</link:label>
    <link:label xlink:label="prlb_EmployeesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represent the individuals employed by the acquired company.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeesMember" xlink:to="prlb_EmployeesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense</link:label>
    <link:label xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Acquisition, Increase (Decrease) in Depreciation Expense</link:label>
    <link:label xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of increase (decrease) of expense recognized in the period that reflects the allocation of the costs of tangible assets in a business combination.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:to="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInInventories</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Increase (Decrease) in Inventories, Total</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInInventories" xlink:to="us-gaap_IncreaseDecreaseInInventories-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:label xlink:label="dei_TradingSymbol-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_TradingSymbol" xlink:to="dei_TradingSymbol-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued for RAPID acquisition (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_LocalPhoneNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LocalPhoneNumber" xlink:to="dei_LocalPhoneNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued for RAPID acquisition</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Exercised (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TableTextBlock</link:label>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes Tables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_TableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revaluation of deferred tax liability</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued on exercise of options and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_SheetMetalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sheet Metal [Member]</link:label>
    <link:label xlink:label="prlb_SheetMetalMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the information pertaining to sheet metal.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SheetMetalMember" xlink:to="prlb_SheetMetalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued on exercise of options and other (in shares)</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Cancelled (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingAndMarketingExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketing and sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingAndMarketingExpense" xlink:to="us-gaap_SellingAndMarketingExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesAndStockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities and shareholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:label xlink:label="country_US-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">UNITED STATES</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_US" xlink:to="country_US-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and development</link:label>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Research and Development Expense, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpense" xlink:to="us-gaap_ResearchAndDevelopmentExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained earnings</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtDisclosureTextBlock" xlink:to="us-gaap_DebtDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_CashAndCashEquivalentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Changes in operating assets and liabilities, net of acquisitions:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DisclosureTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes to Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherNoncashIncomeExpense</link:label>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNoncashIncomeExpense" xlink:to="us-gaap_OtherNoncashIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryDisclosureTextBlock" xlink:to="us-gaap_InventoryDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Inventory, Current [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Present value of lease liabilities</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Liability, Total</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other intangible assets, net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherIntangibleAssetsNet" xlink:to="us-gaap_OtherIntangibleAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Pension and Other Postretirement Benefits Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsequentEventsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Subsequent Events [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsequentEventsTextBlock" xlink:to="us-gaap_SubsequentEventsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease assets</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Right-of-Use Asset</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total future minimum lease payments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less interest</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2022</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2023</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">After 2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2021</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2022</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2023</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2020</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2021</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2020</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Currency Transactions and Translations Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Noncash Expense, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensation" xlink:to="us-gaap_ShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Operating Lease, Liability, Maturity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherAssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherAssetsNoncurrent" xlink:to="us-gaap_OtherAssetsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Leases [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeLeasesPolicyTextBlock" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted average useful life remaining (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationsPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Combinations Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationsPolicy" xlink:to="us-gaap_BusinessCombinationsPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Useful Life (Year)</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Asset, Useful Life</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeOneMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range One [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeOneMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range one [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeOneMember" xlink:to="prlb_ExercisePriceRangeOneMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentForAmortization" xlink:label="us-gaap_AdjustmentForAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentForAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AdjustmentForAmortization</link:label>
    <link:label xlink:label="us-gaap_AdjustmentForAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amortization, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentForAmortization" xlink:to="us-gaap_AdjustmentForAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeTwoMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Two [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeTwoMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range two [member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeTwoMember" xlink:to="prlb_ExercisePriceRangeTwoMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeThreeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Three [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeThreeMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range three [member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeThreeMember" xlink:to="prlb_ExercisePriceRangeThreeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpensesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpensesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeFourMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Four [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeFourMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range four [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeFourMember" xlink:to="prlb_ExercisePriceRangeFourMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxPolicyTextBlock" xlink:to="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsFairValueDisclosure</link:label>
    <link:label xlink:label="us-gaap_AssetsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsFairValueDisclosure" xlink:to="us-gaap_AssetsFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</link:label>
    <link:label xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amortization of held-to-maturity securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseTermOfContract</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Operating Lease, Term of Contract</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:to="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and Development Expense, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Depreciation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Depreciation</link:label>
    <link:label xlink:label="us-gaap_Depreciation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Depreciation, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Depreciation" xlink:to="us-gaap_Depreciation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DepreciationDepletionAndAmortization" xlink:to="us-gaap_DepreciationDepletionAndAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesNoncurrent" xlink:to="us-gaap_MarketableSecuritiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_InjectionMoldingProtomoldMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Injection Molding (Protomold) [Member]</link:label>
    <link:label xlink:label="prlb_InjectionMoldingProtomoldMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the Injection Molding (Protomold) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_InjectionMoldingProtomoldMember" xlink:to="prlb_InjectionMoldingProtomoldMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsCurrent</link:label>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ThreeDPrintingFinelineMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">3D Printing (Fineline) [Member]</link:label>
    <link:label xlink:label="prlb_ThreeDPrintingFinelineMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the 3D Printing (Fineline) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ThreeDPrintingFinelineMember" xlink:to="prlb_ThreeDPrintingFinelineMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_CNCMachiningFirstcutMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">CNC Machining (Firstcut) [Member]</link:label>
    <link:label xlink:label="prlb_CNCMachiningFirstcutMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the CNC Machining (Firstcut) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_CNCMachiningFirstcutMember" xlink:to="prlb_CNCMachiningFirstcutMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Asset Acquisitions, Contingent Consideration, Liability, Milestone Period</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The milestone period of liability recognized arising from contingent consideration in an asset acquisition.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesReceivable" xlink:to="us-gaap_IncomeTaxesReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Compensation Related Costs, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Advertising Cost [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,786,459 and 26,984,747 shares as of December 31, 2019 and December 31, 2018, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockValue" xlink:to="us-gaap_CommonStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by operating activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementFrequencyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Measurement Frequency [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementsRecurringMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Recurring [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementsRecurringMember" xlink:to="us-gaap_FairValueMeasurementsRecurringMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesAuthorized" xlink:to="us-gaap_CommonStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesIssued" xlink:to="us-gaap_CommonStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsValuationAllowance</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Assets, Valuation Allowance, Total</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less valuation allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeMember" xlink:to="srt_RangeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeasePayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating cash flows from operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeasePayments" xlink:to="us-gaap_OperatingLeasePayments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MaximumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Maximum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MaximumMember" xlink:to="srt_MaximumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MinimumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Minimum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MinimumMember" xlink:to="srt_MinimumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductOrServiceAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductOrServiceAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductsAndServicesDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductsAndServicesDomain" xlink:to="srt_ProductsAndServicesDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsNet</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total deferred tax assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeAxis" xlink:to="srt_RangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of December 31, 2019 and December 31, 2018, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockValue" xlink:to="us-gaap_PreferredStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesIssued" xlink:to="us-gaap_PreferredStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid for interest</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestPaidNet" xlink:to="us-gaap_InterestPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesPaid-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid for taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesPaid" xlink:to="us-gaap_IncomeTaxesPaid-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Corporate Unallocated and Japan Segment[Member]</link:label>
    <link:label xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Segment for corporate unallocated expenses and Japan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:to="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOther-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOther" xlink:to="us-gaap_DeferredTaxAssetsOther-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_StatementGeographicalAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_StatementGeographicalAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_EuropeSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Europe Segment [Member]</link:label>
    <link:label xlink:label="prlb_EuropeSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for Europe</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EuropeSegmentMember" xlink:to="prlb_EuropeSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToEmployees" xlink:label="us-gaap_PaymentsToEmployees" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToEmployees-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToEmployees</link:label>
    <link:label xlink:label="us-gaap_PaymentsToEmployees-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Payments to Employees</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToEmployees" xlink:to="us-gaap_PaymentsToEmployees-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_SegmentGeographicalDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_SegmentGeographicalDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesAuthorized" xlink:to="us-gaap_PreferredStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_EuropeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Europe [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_EuropeMember" xlink:to="srt_EuropeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredIncomeTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Total deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_UnitedStatesSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">United States Segment [Member]</link:label>
    <link:label xlink:label="prlb_UnitedStatesSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for United States.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_UnitedStatesSegmentMember" xlink:to="prlb_UnitedStatesSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory</link:label>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Inventory, net of allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryNet-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_JapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Japan Segment [Member]</link:label>
    <link:label xlink:label="prlb_JapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for Japan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_JapanSegmentMember" xlink:to="prlb_JapanSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryWorkInProcess-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Work in process</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryWorkInProcess" xlink:to="us-gaap_InventoryWorkInProcess-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue</link:label>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Revenue from Contract with Customer, Including Assessed Tax</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryValuationReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InventoryValuationReserves</link:label>
    <link:label xlink:label="us-gaap_InventoryValuationReserves-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Allowance for obsolescence</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryValuationReserves" xlink:to="us-gaap_InventoryValuationReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel3Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 3 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel3Member" xlink:to="us-gaap_FairValueInputsLevel3Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsInventory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsInventory" xlink:to="us-gaap_DeferredTaxAssetsInventory-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InventoryGross</link:label>
    <link:label xlink:label="us-gaap_InventoryGross-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total inventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel1Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 1 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel1Member" xlink:to="us-gaap_FairValueInputsLevel1Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel2Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 2 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel2Member" xlink:to="us-gaap_FairValueInputsLevel2Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryRawMaterials-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Raw materials</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryRawMaterials" xlink:to="us-gaap_InventoryRawMaterials-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentUsefulLife</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Useful Life</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsReceivableNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts receivable, net of allowance for doubtful accounts of $952 and $919 as of December 31, 2019 and December 31, 2018, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsReceivableNetCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Warrants and stock options</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LandBuildingsAndImprovementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land, Buildings and Improvements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LandBuildingsAndImprovementsMember" xlink:to="us-gaap_LandBuildingsAndImprovementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated Foreign Currency Adjustment Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BuildingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Building [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BuildingMember" xlink:to="us-gaap_BuildingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenuesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statements of Operations:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenuesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Short-term marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesCurrent" xlink:to="us-gaap_MarketableSecuritiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional paid-in capital</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shareholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other income, net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNonoperatingIncomeExpense" xlink:to="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net operating loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueDisclosuresTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueDisclosuresTextBlock" xlink:to="us-gaap_FairValueDisclosuresTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryPolicyTextBlock" xlink:to="us-gaap_InventoryPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNetAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax assets:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNetAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInFinancingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Liabilities</link:label>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_Liabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingIncomeLoss</link:label>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income from operations</link:label>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Income from operations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInOperatingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInInvestingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Net deferred tax liability</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Effect of exchange rate changes on cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:to="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease</link:label>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net increase (decrease) in cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:to="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GrossProfit</link:label>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Gross profit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_GrossProfit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfGoodsAndServicesSold-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of revenue</link:label>
    <link:label xlink:label="us-gaap_CostOfGoodsAndServicesSold-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cost of Goods and Services Sold, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfGoodsAndServicesSold" xlink:to="us-gaap_CostOfGoodsAndServicesSold-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income from Operations by Geographic Area [Table Text Block]</link:label>
    <link:label xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of income from operations by geographic area.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingStandardsUpdate201409Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update 2014-09 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingStandardsUpdate201409Member" xlink:to="us-gaap_AccountingStandardsUpdate201409Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsDomain" xlink:to="srt_ConsolidationItemsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and Amortization by Geographic Region [Table Text Block]</link:label>
    <link:label xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of depreciation and amortization by geographic region.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:to="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of expenditures for additions to long-lived assets by geographic region.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:to="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesLeasingArrangements</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingStandardsUpdate201602Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update 2016-02 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingStandardsUpdate201602Member" xlink:to="us-gaap_AccountingStandardsUpdate201602Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketable Securities, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesPolicy" xlink:to="us-gaap_MarketableSecuritiesPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TypeOfAdoptionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Type of Adoption [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_TypeOfAdoptionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of shares withheld for tax obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Depreciation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Adjustments for New Accounting Pronouncements [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax liabilities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesNetAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UndistributedEarningsOfForeignSubsidiaries</link:label>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Undistributed Earnings of Foreign Subsidiaries</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsForRepurchaseOfCommonStock</link:label>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transition tax</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsMember" xlink:to="us-gaap_RetainedEarningsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of Individual [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_TitleOfIndividualAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of Individual [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from exercises of stock options</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalMember" xlink:to="us-gaap_AdditionalPaidInCapitalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockMember" xlink:to="us-gaap_CommonStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementEquityComponentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_StatementEquityComponentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquityComponentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_EquityComponentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Office Furniture And Equipment [Member]</link:label>
    <link:label xlink:label="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Office furniture and equipment [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OfficeFurnitureAndEquipmentMember" xlink:to="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income before income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Domestic</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCredit</link:label>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-term Line of Credit, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCredit" xlink:to="us-gaap_LineOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disclosure of Reclassification Amount [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_DisaggregationOfRevenueAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disaggregation of Revenue [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfLongTermDebt</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments on debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfLongTermDebt" xlink:to="us-gaap_RepaymentsOfLongTermDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equipment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquipmentMember" xlink:to="us-gaap_EquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from Contract with Customer [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentAnnualReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Annual Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentAnnualReport" xlink:to="dei_DocumentAnnualReport-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts Receivable [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComputerEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer Equipment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComputerEquipmentMember" xlink:to="us-gaap_ComputerEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityIncorporationStateCountryCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityIncorporationStateCountryCode" xlink:to="dei_EntityIncorporationStateCountryCode-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefits</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Unrecognized Tax Benefits, Ending Balance</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefits" xlink:to="us-gaap_UnrecognizedTaxBenefits-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">General and Administrative Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingPoliciesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentTransitionReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Transition Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentTransitionReport" xlink:to="dei_DocumentTransitionReport-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Decrease related to expiration of statutes of limitations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:to="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityInteractiveDataCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityInteractiveDataCurrent" xlink:to="dei_EntityInteractiveDataCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingAndMarketingExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Selling and Marketing Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingAndMarketingExpenseMember" xlink:to="us-gaap_SellingAndMarketingExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue recognition transition adjustment</link:label>
    <link:label xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cumulative Effect of New Accounting Principle in Period of Adoption</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additions for tax positions of prior years</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:label xlink:label="dei_SecurityExchangeName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityExchangeName" xlink:to="dei_SecurityExchangeName-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additions for tax positions of current year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:label xlink:label="dei_Security12bTitle-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12bTitle" xlink:to="dei_Security12bTitle-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:label xlink:label="prlb_ComputerHardwareAndSoftwareGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer hardware and software</link:label>
    <link:label xlink:label="prlb_ComputerHardwareAndSoftwareGross-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The gross amount of computer hardware and software as of the balance sheet date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ComputerHardwareAndSoftwareGross" xlink:to="prlb_ComputerHardwareAndSoftwareGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfSalesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of Sales [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfSalesMember" xlink:to="us-gaap_CostOfSalesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and Development Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_IncomeStatementLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued liabilities and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementBusinessSegmentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_StatementBusinessSegmentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentDomain" xlink:to="us-gaap_SegmentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Diluted - weighted-average shares outstanding: (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:type="locator"/>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan</link:label>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan</link:label>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) Plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:to="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLossCarryforwards</link:label>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLossCarryforwards" xlink:to="us-gaap_OperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:type="locator"/>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan</link:label>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan</link:label>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:to="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementTable-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareDiluted" xlink:to="us-gaap_EarningsPerShareDiluted-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Basic - weighted-average shares outstanding: (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Miscellaneous</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateContinuingOperations</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Percent, Total</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareBasic" xlink:to="us-gaap_EarningsPerShareBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Valuation allowance against deferred tax assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfCashFlowsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementOfCashFlowsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ESPPMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ESPP [Member]</link:label>
    <link:label xlink:label="prlb_ESPPMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">ESPP [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ESPPMember" xlink:to="prlb_ESPPMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_IncomeStatementAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from External Customers by Geographic Areas [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-lived Assets by Geographic Areas [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Tax reserves</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from issuance of debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIssuanceOfDebt" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Domestic manufacturing deduction</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investments Classified by Contractual Maturity Date [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationWorkingCapitalAdjustment</link:label>
    <link:label xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Working Capital Adjustment</link:label>
    <link:label xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of purchase price adjustment based on the working capital (current assets minus current liabilities) of the acquired entity which reduces the purchase price if the closing date working capital of the acquired entity is below an agreed amount.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:to="prlb_BusinessCombinationWorkingCapitalAdjustment-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:type="locator"/>
    <link:label xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Asset Acquisition, Contingent Consideration Arrangement Upon Completion of Milestone</link:label>
    <link:label xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">For contingent consideration arrangements recognized in connection with an asset acquisition, this element represents an estimate of the consideration which may be paid upon completion of certain milestones.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:to="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State tax (net of federal benefit)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign rate differential</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Assets Measured on Recurring Basis [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Research and development credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Federal tax statutory rate</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherLiabilitiesNoncurrent" xlink:to="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Valuation Allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net assets acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from sale of businesses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:to="us-gaap_ProceedsFromDivestitureOfBusinesses-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total shareholders' equity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_StockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities assumed</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Comprehensive (Loss) Income, net of tax</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Payments to Acquire Businesses, Net of Cash Acquired, Total</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash consideration</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Cash used for acquisitions, net of cash acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementClassOfStockAxis" xlink:label="us-gaap_StatementClassOfStockAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementClassOfStockAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementClassOfStockAxis" xlink:to="us-gaap_StatementClassOfStockAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAcquiredFromAcquisition-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashAcquiredFromAcquisition</link:label>
    <link:label xlink:label="us-gaap_CashAcquiredFromAcquisition-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Cash acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAcquiredFromAcquisition" xlink:to="us-gaap_CashAcquiredFromAcquisition-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireBusinessesGross</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cash paid</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireBusinessesGross" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income (Loss) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Liabilities assumed:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable, number exercisable (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Performance stock (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Performance stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingSegmentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating Segments [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingSegmentsMember" xlink:to="us-gaap_OperatingSegmentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable, weighted average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Range of exercise prices, upper limit (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Range of exercise prices, lower limit (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit-label" xlink:type="arc"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>13
<FILENAME>prlb-20191231_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 01:17AM UTC 2020-02-26--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events" xlink:href="prlb-20191231.xsd#statement-note-19-subsequent-events" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SubsequentEventsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-17-litigation" xlink:href="prlb-20191231.xsd#statement-note-17-litigation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-17-litigation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory" xlink:href="prlb-20191231.xsd#statement-note-10-inventory" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InvestmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business" xlink:href="prlb-20191231.xsd#statement-note-1-nature-of-business" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-document-and-entity-information" xlink:href="prlb-20191231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentAnnualReport" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityWellKnownSeasonedIssuer" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityVoluntaryFilers" xlink:type="arc"/>
    <link:presentationArc order="24" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:presentationArc order="25" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:presentationArc order="26" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:presentationArc order="27" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:presentationArc order="28" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:presentationArc order="29" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:presentationArc order="30" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityPublicFloat" xlink:type="arc"/>
    <link:presentationArc order="31" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="prlb-20191231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:href="prlb-20191231.xsd#statement-note-2-summary-of-significant-accounting-policies-" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue" xlink:href="prlb-20191231.xsd#statement-note-3-revenue" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeesMember" xlink:label="prlb_EmployeesMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="prlb_EmployeesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations" xlink:href="prlb-20191231.xsd#statement-note-11-financing-obligations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans" xlink:href="prlb-20191231.xsd#statement-note-12-employee-benefit-plans" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_ForeignPlanMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases" xlink:href="prlb-20191231.xsd#statement-note-14-leases" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeAxis" xlink:label="us-gaap_LeaseArrangementTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeasesTextBlock" xlink:label="us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseArrangementTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies" xlink:href="prlb-20191231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-significant-accounting-policies-policies" xlink:label="prlb_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-significant-accounting-policies-policies" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_MarketableSecuritiesPolicy" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_BusinessCombinationsPolicy" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-3-revenue-tables" xlink:label="prlb_statement-statement-note-3-revenue-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-3-revenue-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-tables" xlink:label="prlb_statement-statement-note-5-business-combinations-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-business-combinations-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:label="prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-7-fair-value-measurements-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-tables" xlink:label="prlb_statement-statement-note-8-marketable-securities-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-8-marketable-securities-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-9-property-and-equipment-tables" xlink:label="prlb_statement-statement-note-9-property-and-equipment-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-property-and-equipment-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables" xlink:href="prlb-20191231.xsd#statement-note-10-inventory-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-10-inventory-tables" xlink:label="prlb_statement-statement-note-10-inventory-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-10-inventory-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-tables" xlink:href="prlb-20191231.xsd#statement-note-14-leases-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-tables" xlink:label="prlb_statement-statement-note-14-leases-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-14-leases-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-tables" xlink:label="prlb_statement-statement-note-16-income-taxes-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-tables" xlink:label="prlb_statement-statement-note-18-segment-reporting-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="prlb-20191231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CapitalizedComputerSoftwareNet-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdvertisingExpense-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ResearchAndDevelopmentExpense-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInInventories-n2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod" xlink:label="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense" xlink:label="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-n2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeesMember" xlink:label="prlb_EmployeesMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentForAmortization" xlink:label="us-gaap_AdjustmentForAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual-n2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual" xlink:label="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToEmployees" xlink:label="us-gaap_PaymentsToEmployees-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="prlb_EmployeesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense-n2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentForAmortization-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual-2" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual-n2" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToEmployees-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone" xlink:label="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiability" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod" xlink:label="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_BusinessCombinationWorkingCapitalAdjustment" xlink:label="prlb_BusinessCombinationWorkingCapitalAdjustment-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationWorkingCapitalAdjustment-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_AssetAcquisitionsContingentConsiderationLiability-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Depreciation-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual" xlink:href="prlb-20191231.xsd#statement-note-11-financing-obligations-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCredit-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual" xlink:href="prlb-20191231.xsd#statement-note-12-employee-benefit-plans-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_ForeignPlanMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-2" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-2" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-2" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual" xlink:href="prlb-20191231.xsd#statement-note-14-leases-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeFinancialLeaseLiabilityNumberOfLeases" xlink:label="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases" xlink:label="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeAxis" xlink:label="us-gaap_LeaseArrangementTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseArrangementTypeDomain" xlink:label="us-gaap_LeaseArrangementTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="us-gaap_LeaseArrangementTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseArrangementTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseArrangementTypeAxis" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseTermOfContract-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_LesseeFinancialLeaseLiabilityNumberOfLeases-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLossCarryforwards-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_OperatingLossCarryforwardsExpirationPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:label="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_Goodwill-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_CashAcquiredFromAcquisition-n9" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:label="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:label="prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-14-leases-balance-sheet-information-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:href="prlb-20191231.xsd#statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_InjectionMoldingProtomoldMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_CNCMachiningFirstcutMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_JP" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_ThreeDPrintingFinelineMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_SheetMetalMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_OtherProductsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_JP" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-lease-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-lease-expense-details" xlink:label="prlb_statement-statement-note-14-leases-lease-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-14-leases-lease-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:label="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenuesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_GrossProfit-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetImpairmentCharges" xlink:label="us-gaap_AssetImpairmentCharges" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease" xlink:label="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AssetImpairmentCharges" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_GainLossOnSaleOfBusiness-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLongTermDebt-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-4" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-5" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaid" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:label="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNet-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-n9" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilities-n10" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeOneMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeTwoMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeThreeMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeFourMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20191231.xsd#statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:href="prlb-20191231.xsd#statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_RapidMember" xlink:label="prlb_RapidMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:label="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_RapidMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20191231.xsd#statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:label="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TradeSecretsMember" xlink:label="us-gaap_TradeSecretsMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TradeSecretsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:label="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancialInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_CorporateDebtSecuritiesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CashAndCashEquivalentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_BankTimeDepositsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20191231.xsd#statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:label="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20191231.xsd#statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:label="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Land" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BuildingsAndImprovementsGross" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MachineryAndEquipmentGross" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_ComputerHardwareAndSoftwareGross" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseholdImprovementsGross" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ConstructionInProgressGross" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:href="prlb-20191231.xsd#statement-note-10-inventory-inventory-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-10-inventory-inventory-details" xlink:label="prlb_statement-statement-note-10-inventory-inventory-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-10-inventory-inventory-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_CostOfSalesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_SellingAndMarketingExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:label="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:href="prlb-20191231.xsd#statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:label="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-income-from-operations-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_JP" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:href="prlb-20191231.xsd#statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:label="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_JP" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20191231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity" xlink:href="prlb-20191231.xsd#statement-consolidated-statements-of-shareholders-equity" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:label="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_CommonStockSharesOutstanding-5" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-5" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-5" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20191231.xsd#statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTax-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20191231.xsd#statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:label="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details" xlink:href="prlb-20191231.xsd#statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20191231.xsd#prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-5" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>14
<FILENAME>image02.jpg
<TEXT>
begin 644 image02.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_X0 L17AI9@  34T *@    @  0$Q  (
M   *    &@    !'<F5E;G-H;W0 _]L 0P '!04&!00'!@4&" <'" H1"PH)
M"0H5#Q ,$1@5&AD8%1@7&QXG(1L=)1T7&"(N(B4H*2LL*QH@+S,O*C(G*BLJ
M_]L 0P$'" @*"0H4"PL4*AP8'"HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ_\  $0@")@*2 P$B  (1 0,1 ?_$
M !\   $% 0$! 0$!           ! @,$!08'" D*"__$ +40  (! P,"! ,%
M!00$   !?0$" P $$042(3%!!A-180<B<10R@9&A""-"L<$54M'P)#-B<H()
M"A87&!D:)28G*"DJ-#4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T
M=79W>'EZ@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>HJ:JRL[2UMK>XN;K"P\3%
MQL?(R<K2T]35UM?8V=KAXN/DY>;GZ.GJ\?+S]/7V]_CY^O_$ !\!  ,! 0$!
M 0$! 0$        ! @,$!08'" D*"__$ +41  (! @0$ P0'!00$  $"=P !
M @,1! 4A,08205$'87$3(C*!"!1"D:&QP0DC,U+P%6)RT0H6)#3A)?$7&!D:
M)B<H*2HU-C<X.3I#1$5&1TA)2E-455976%E:8V1E9F=H:6IS='5V=WAY>H*#
MA(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&Q\C)RM+3
MU-76U]C9VN+CY.7FY^CIZO+S]/7V]_CY^O_:  P# 0 "$0,1 #\ ^D:,T4E
M"&15^\0/J:3S8_[Z_G7"^/(3=>(M"M6DD2.9G1MC$'!*U=?X=:?M_=W]\C=F
M\[.*W5."BG*6_D<GMJCG*,(WMYG7YH+J,9(&>F37!6-WJ/A#Q)!I.HW37FGW
MAQ!*_+(2<#]<"M_Q#8VEW=Z:]YJ/V-HIMT:;@/-/]WWI2I<K6NCZEQK<T7IJ
MNAOYHS5:[OK:P@,U[/'!&.-SM@55@\0Z3<PR30ZA T<0RYW@;1G&36?+)JZ1
MJYQ3LV:18*,L<#U-&X&LC7H[/4_#L@FOQ;6LJJPN58  =00?>N?\4ZN-(\.:
M?9Z;J2^:3$K,&&]HL'YOH<=:J%-SLD9U*RIW;V2.XS1FJEE?VM];>=:7$<T:
M\%XV! /UJE+XJT.&;RI-3M]V<?*^<?B*GDDW9(T]I!*[9L4@=6^Z0?H:K&YB
MN=.>:VD62-HR5=&R#QV-<U\.79_#\Y=F8_:GY8YJE!N+EV(=5*<8+J=?32ZK
M]XX^IQ2UQ/Q*+?8--179-]V%)5L<$&BG#GFHCK5/9P<SM/-C_OK^=.R*X_\
MX5WI[Q B]OE)'7SCQ6;*VI> ]6M_.O9+W2;E]K>:<M&>Y_K6BI1EI"6IBZ\X
M*]2-EZGH)=5^\<?6E+JHR2 !U)[5A>*;*SO]+CCOM0^P1B56$@8#)].:Y_QW
MJD$D=AI<&H*JM,%NMC\JHQC=Z#G-33I<[21=6O[--OH=VDT<@)C=7 Z[3FD2
M>*1B(Y%8CJ%8&O.]8DT70?"ES;^&M04S73J'V3[VV]\>@_QK=\'Z1HEHGVK2
MKC[1<M$JSL)MV">>G:JE248<WZ$0Q#E-0T\]3JLTN:R[CQ'HUK<>1/J5LDN<
M%3(.#[^GXU?CFCFB$D3JZ,,AE.01]:P<6MT=*G%[,DS2UF2^(=)A@\Z34+<1
M[RF[>#\PZBK2W]J]F+Q;B+[,5W"7>-N/7-#C)=!*<7LRSFC-9=MXBTB\N?(M
M=1MY)<X"B098^WK^%7+J\M[.W,]W,D,0X+R' 'XT.,D[- IQ:NF3YHS6;=>(
M=)L)%CN]0@C=N0I?G'K[5<BNH)[87,,R20D;A(K J1ZYH<9+6PU.+=DR;=1O
M&[!(SZ9KBM*\413>,M36ZU*+[&%1+4%P%//;U-:]]8VDOBRQNI=1,-S&A$=K
MN'[P<\XK1TG%VEV,8UU-7CWL;^:,U6N[ZUL(?-OKB*"/IND8*"?QJE:^)='O
M;@0VNH0/*QPJ;L%OIGK6:C)JZ1JZD$[-FKNHW#OQ7+>.]:?2]!=+.Z6"\E8!
M0"-Y7N0/ZUI17ECJV@2I%?1L@AV2RHX/EY7J:OV;Y5+H1[:/.X+=&N&!&0<C
MVI<UD>'+:VLM"@AL[S[;"F=LY;.[GUI9/$VBPW'D2:G;+(#@CS!P?<]!4\KN
MTM2E47*G+2YK9HS3$E26-7C971AE64Y!'J*IOK6FI#+*]];B.%MCL9!A6]/K
M[4K-[%.45NR_FBL^PUK3M3)&GWD,[#JJMR/PZU?%#33LPC)25T[BT444B@HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "DI:2@#A_&?_ ".'
MAS_KJW\UKMS7!>/;J*R\2Z#<W!Q%$SNQ SP"M:9^(_A\J=DLSG'"K">:ZY4Y
MSIPY5<X*=6%.K-2=M2C\1P2='\OB3[3\OUX_K4GCK_D):!GK]J']*K6R7GC7
MQ-;:C-:O:Z98G=&)!@R-G(_7'Y59\>'&J:#D_P#+U_A6D?=<8/=7,I7E&=1;
M-JQ!) GB?XBSVNH9DLM.B^2$GY6;@'/XD_D*D\<^&M/A\/RWUA;QVLL& WDK
MM#J2 00/P-&I&7PKXV?67@DET^]C\N5HUR8VX[?AG\357Q?XLM=7\/S6NCI+
M.AVM/,8RJQKN&!D]R<4XJ;G!PVT(FZ:IU%/XM?\ @6+NN?\ )*(#_P!.L/\
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
MEKM%Z5SU&Y0BWN=5%*-6:2TT_(6BBBN<ZPHHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@"&:TM[@@W$$<NWIO0-C\Z8NG62G*VD"GU$2
M_P"%)/J5I;2^7/.J/C."#4?]LZ?_ ,_*?D:=V+E3Z%T* .!]*CE@BE*M+$CE
M#E2R@X/M5;^V=/\ ^?I/R/\ A1_;.G_\_*?D?\*0]##UK4]7T;7/.>UDOM'E
M0!DBC#-&W^?PYK'U74YO%5F-(T'29X(IG!FFEB$:J <]N/\ ]5=G_;&G_P#/
MRGY'_"C^V-/_ .?E/R/^%;QJJ-M-3EG0E*_O:,EMK&&'38;)T66**-8P'7((
M Q4YAC,7E&-3'C&S:,8],54&LZ>/^7E/R/\ A1_;.G_\_*?D:QNV=*22L6(K
M2W@C*0P1QHW540 '\J9%IUE!)OAM((W_ +RQ@&HO[9T__GY3\C1_;.G_ //R
MGY&B[#E78M"VA65I%B0.PPS!1D_4T1010+MAB2,9SA% Y_"JO]LZ?_S\I^1J
MS!<Q7,>^!PZYQD4@LB6HYK:"X $\,<H!R ZAL?G4E% ]RL--LE.5L[<'U$2_
MX5.J*J@* H'0#BG44[L226Q'+;PSH%GB210<@.H(S^-$EO#*4,L2.4.5+*#M
M^GI4E%(+(CE@BG39-&DB]=KJ"/UIX4   8 & !2T4#*TNG64TGF36D$C_P!Y
MHP34ZHJJ%50%'  '2G44[L226J(XK>&$$0Q)&&.3L4#)]>*<R*RE6 8'J",Y
MIU%(=BM'IUE#)YD-I C_ -Y8P#4TD,4R;)HUD3^ZZY%/HIW8K);"*BJH50
M,  =*8EO#$[O'$B,YRS*H!;Z^M244AV(9K.VN&#7%O%*R]"Z!B/SIS6\+2K*
MT2&1?NN5&1]#4E%.[%9$,]I;W2A;F".4#H'4''YT+9VR0F)+>)8VZH$ !_"I
MJ*+L.57O88L$2Q>4L:B/&-@48Q]*CCLK6%&2&WBC5_O!4 #?7UJ>BD%D,CAC
MA0)#&L:#HJC 'X5"^FV4DOF26D#/UW&,$U9HIW:#E3W$"@# &!3([>&%F,42
M1ESEBJ@;C[U)12&1R6\,S*98D<H<J64':?:I ,444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% &)J>BSWMZ9HI(U7:!ALYX
M_"JG_"-77_/:']?\*Z:B@#F?^$:NO^>T/Z_X4?\ "-77_/:']?\ "NFHH YG
M_A&KK_GM#^O^%'_"-77_ #VA_7_"NFHH YG_ (1JZ_Y[0_K_ (4?\(U=?\]H
M?U_PKIJ* .9_X1JZ_P">T/Z_X4?\(U=?\]H?U_PKIJ* .9_X1JZ_Y[0_K_A6
MSI5D]A:>5*RLVXME:NT4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 SSH_^>B_]]"CSH_^>B?]]"L=_P#6-_O&
MDH V?.C_ .>B?]]"CSH_^>B?]]"L:BD(V?.C_P">B?\ ?0H\Z/\ YZ)_WT*Q
MJ* -GSH_^>B?]]"CSH_^>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&H
MH V?.C_YZ)_WT*/.C_YZ)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@
M#9\Z/_GHG_?0H\Z/_GHG_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -
MGSH_^>B?]]"CSH_^>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&HH V?
M.C_YZ)_WT*/.C_YZ)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@#9\Z
M/_GHG_?0H\Z/_GHG_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -GSH_
M^>B?]]"CSH_^>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&HH V?.C_Y
MZ)_WT*/.C_YZ)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@#9\Z/_GH
MG_?0H\Z/_GHG_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -GSH_^>B?
M]]"CSH_^>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&HH V?.C_YZ)_W
MT*/.C_YZ)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@#9\Z/_GHG_?0
MH\Z/_GHG_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -GSH_^>B?]]"C
MSH_^>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&HH V?.C_YZ)_WT*/.
MC_YZ)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@#9\Z/_GHG_?0H\Z/
M_GHG_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -GSH_^>B?]]"CSH_^
M>B?]]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&HH V?.C_YZ)_WT*/.C_YZ
M)_WT*QJ* -GSH_\ GHG_ 'T*/.C_ .>B?]]"L:B@#9\Z/_GHG_?0H\Z/_GHG
M_?0K&HH V?.C_P">B?\ ?0H\Z/\ YZ)_WT*QJ* -GSH_^>B?]]"CSH_^>B?]
M]"L:B@#9\Z/_ )Z)_P!]"CSH_P#GHG_?0K&I#TH W:*1/]6OT%%,9BO_ *QO
M]XTE*_\ K&_WC24A!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !2'I2TAZ4 ;B?ZM?
MH**$_P!6OT%%,9BO_K&_WC24K_ZQO]XTE(04444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4AZ4M(>E &XG^K7Z"BA/]6OT%%,9\QZG\8O%]OK%[!%<682*YD1<VJG@.
M0/Y55_X71XR_Y^++_P !%KCM:_Y&#4O^OR;_ -#-4ZULK$G>_P#"Z/&7_/Q9
M?^ BT?\ "Z/&7_/Q9?\ @(M<%13L@.]_X71XR_Y^++_P$6C_ (71XR_Y^++_
M ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR [W_A='C+
M_GXLO_ 1:/\ A='C+_GXLO\ P$6N"HHL@.]_X71XR_Y^++_P$6C_ (71XR_Y
M^++_ ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR [W_A
M='C+_GXLO_ 1:/\ A='C+_GXLO\ P$6N"HHL@.]_X71XR_Y^++_P$6C_ (71
MXR_Y^++_ ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR
M[W_A='C+_GYLO_ 1:]G^%=_K/B?PD=6\2/&S3S,+811",;%XSQUR<_E7S%8V
M<VHZA;V5JN^:YE6*-1W9C@?J:^SM#TF'0]!LM+M@/+M(5B! QN(')_$Y/XU$
MDD-$WV"#T;\Z/L$'HWYU*UQ$KNC2H&C7>X+#*KSR?0<'GV-(US#';&XDEC6$
M+O,I8!0O7.>F/>H&1_8(/1OSH^P0>C?G3;+5;#4MW]G7UM=[/O\ D3+)M^N#
MQ5K- %?[!!Z-^='V"#T;\ZFBF2:,21.LB-]UD.0?Q%(DR2;O+=7V-M;:V=I]
M#[T 1?8(/1OSH^P0>C?G4PE0R>6'4R 9*YY ]<4[- %?[!!Z-^='V"#T;\Z6
M[O[33XA+?W4%K&6VAYI @)],GO4-SK.F65RMO>:C9V\[8VQ2SJK'/3 )S0!+
M]@@]&_.C[!!Z-^=23W$5K \US*D,*#+R2,%51ZDG@4R'4+2XLS=V]U!+; $F
M9) R8'7Y@<<4 )]@@]&_.C[!!Z-^=1WNL:=IS(-0U"TM2XR@GG5-P]1D\U;#
MAE#(0RD9!'0B@"#[!!Z-^='V"#T;\ZL9HS0!7^P0>C?G1]@@]&_.IO-0RF,.
MID49*9Y ]<4&9!,(BZB1E+*A/) QD@?B/S% $/V"#T;\Z/L$'HWYU8S1F@"O
M]@@]&_.C[!!Z-^=6,TWS$\WR]Z[\;MN><>N* (?L$'HWYT?8(/1OSJQGUHS0
M!7^P0>C?G1]@@]&_.II)4AB:69UCC499G. H]2:=NH K_8(/1OSH^P0>C?G5
MC--6:-I'1'5G3&Y0>5R,C([4 0_8(/1OSH^P0>C?G4[R+'&SR,J*HRS,< #U
MH#AE#*0P(R".] $'V"#T;\Z/L$'HWYU8S445W!.VV&:*1MN["."<9(SQVR"/
MPH 9]@@]&_.C[!!Z-^=6,GN*,T 5_L$'HWYT?8(/1OSJ82H93$'7S H8IGD
M\9QZ<'\J<#0!7^P0>C?G1]@@]&_.K&:BFNH+?/GSQ184O\[A?E'4\]AD<^]
M#/L$'HWYT?8(/1OSJQDT9H K_8(/1OSH^P0>C?G5C=38YDF0/"ZR(21N4Y''
M!H A^P0>C?G1]@@]&_.IGE6.)I)&5$4$LS' 4#J2:57W*"N"",@@]: (/L$'
MHWYT?8(/1OSJ:.9)HQ)"ZR(>C(<@_C3LT 5_L$'HWYT?8(/1OSJQFHENX'E$
M:3Q-(=V$#@D[2 W'L2,^F: &?8(/1OSH^P0>C?G5C/-+0!6^P0>C?G1]@@]&
M_.K-% %;[!!Z-^='V"#T;\ZLT4 9]W;PP194'<3@<U3JS?2[[C:.B\56I""B
MBB@ I#TI:0]* -Q/]6OT%%"?ZM?H**8SXHUK_D8-2_Z_)O\ T,U3JYK7_(P:
ME_U^3?\ H9JG6Y)I:3X=UG7EE.BZ7=7XA($AMXB^PG.,X^AJ67PGX@@U:'3)
MM%ODOIU+Q6S0$/(HSD@=P,'\J[?X;2V4/PY\8R:I<WUK:@VWF36&/.7E_NY(
M%;WA'Q;IFK^-O"6B:.=0N;?31=.U[J;*9Y"T3<<$\#_#TJ;L#RS4/!WB32K-
M[O4M"O[6W3&^66 A5S[U+;^!?%=W;17-MX=U&6"9 \<B6[%74C((]L5Z7YEA
MI_@;Q)KGAJ_UG73,'L;JUU"88LPQ/[S8,Y'3'/\ 6F>*+K08-!\)#6=6\164
MO]B0%4T@KY9&T<MDCG^E+F8'CUW:7%A>2VM[ ]O<0L5DBD&&0^A%15T+>'UU
M*RU+5[?6[%88)'V0:E=A+V<#D'9@[B<^O6N>J@"BBBF 4444 %%%% !1110
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
MQ]J3>*H]?TRRMM(U VPCE>*!6$Y(YD*L-N3["O6V\3ZJ_P 3/"6DM-%]BO\
M3XKBYB^SQ_/(8R2<[<CGL.*&[ ?.Q8#J0*,@#)->LZOJ]QX!\(:9=^&XX(;[
M6KJYENKV2!)&PDA"QC<" ,=OKZUT_AM+!?$UIXE?3X(I-2\,RWEY:QH%1G5U
MRP7MN HY@L?/^1G%+7L5]X>MM&^'/C*XTT"32]16UN]/D(SB-F&4SV*GBO':
M:=P"BBBF 5I>'='E\0>)+#2H!E[J=8R<=%SR?IC-9M>P?L^^'OM?B"^UZ9,Q
MV,?DPDC_ ):/UQ]%_P#0A2;L@/?K2VBL[.&VMUVQ0HL:#T &!4M**0]:Q*/.
M-2TQE\10P/ICK?W5[=8U)L;9D>&0QINSDX7:-IX&WBIET_4[VUG+:5=1)'IM
MG;20S;0;D12LTT8 /1DR.<9W5O6?C;1;N">YEN%MK>*[:UCEG90)77()4 D@
M<=P*U9=9TZ#4H=/EO(ENYQNBA+?,PYZ?D?RI@<0WARZDN+>YLM)^QKNO%L@8
MT#6&^(!#@?<&\,<+TS[U9\.Z'>VWAW6XOLDMN;BT\J.V-JENK2!&!8*KMDG*
M@L2,X'I707?BW2K;4SIZS>?<JLC21Q$$Q[$W$'\*EM?%&CW>F27\=_"+>$#S
MB6_U9/0'WH YF/1[R/Q-ILZZ5(\L:VX>:>%6$:K&%;9,&#)@9^3!#'/]ZG:E
MX8%YXTEDET5)K:XO;>::8Q)LD189%(;N?F*\'KD5T\OB31X=.BOY=1@6TF;;
M'*6X8]Q^&#3K;7;*XNFMQ*%D\XPQJQ'[TA0Q*XZC!ZT <-J?AO4WTNP@%DYM
MX9+R..!+6.8PEIB874,RA,)T8<KD<5I/X;N?[3N+]K'S;U=4LVBNF"F3R52$
M2D'/ X?..OO7<BEHN!Q?C'2[B]U:UFM=,>\D1 (C)"LD2MNS]XL&A;IEUR<?
M2H9M#U%_B(;UXI"AG62.Y2V0[8A'M,9E+;@-VX[ N#D&NZHH \PD\&SKX:A@
MCT5#+-HSK=IL4F6<21,@;/WF&'P3TY&171>)]$GU06$=A:E+>[C^Q7B@!#%
MQ5CG![!67 _O^U=;11<#S2;PUK&HZ7OU&P$MY/;7<,H<*>1"(XL_[S*6'INJ
MU8^&FCN!J%OHWV:X&J6K1,8U5X[<0Q*X&#\J\,"!UQWKT&BBX'F8\)WDNC7!
MN-*WW<.CI'9EPI:.<2RM\G/##*<_K6QXJ\/2:MJ%_<?V>MTZ:,\=H[*#LN-Q
M*[<]&Z$'MZUVE%%P.)FTF\?Q0)CITCW;74,L6I87$-NJ /$6SD98/\H&#OK(
MET?5[C14T\:3<H]IH]U9LS%0LDC/$5"'/((4\\5Z;11<#A;W0C;^+[.32]&'
MEQ-$$8VZ>5$@^]LD#!HN"25 (8]>IINM>&?MOC*69]'6>"YFLWEG\M=KHGF!
MPQZGJG'< >E=Y10!YOJ>A7HT*.P71%EB2XO/(!MEG$"F7]T%B+*J@KT;JN,
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
M(**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH ***K2ZA:PS+%),H<G&.N#[^E %FBBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *0]*6D/2@#
M<3_5K]!10G^K7Z"BF,Q7_P!8W^\:2E?_ %C?[QI*0@HHHH ***3M0 M%1QSQ
M2L1&X8CJ!4E !1110 4444 %%%% !1110 4444 %%%% !1110 445%<SBWA+
MGD]%'J: ):*SXK-[I?-O'+;A\J>@^G3^=3FV\@;K0D8ZQELJWY]#]* +-%4A
MJ!W#=;L 3M&'4\^F*M1R)*FZ,Y'3Z4 /HHHH **** "BBB@ HHHH **** "B
MBB@ HHJK<2,9UB$IA7879QC/! [\=Z +5%4HD:7I>W(SR-P0$CUQMJ3[+)_S
M^W'Y)_\ $T 6:*K?99/^?VX_)/\ XFFNLML8V^T22AI%0K(%[G'8"@"W1110
M 4444 %%%% !1110 54O+[[*RHJ;W89R3A5'J?0<U;JO-&GVB.1T!!4QL?8]
M ?;- &;#J-U=022*8F1'VD1-@G\^U9*231S32 ;_ ")298@<ALDC)SV[59FB
M%A>W0C>1+0,@=8R >><_ABI9T,D:3:>BPA2<3,_S,.<[A[GU]:H"WIU^HW!V
MV6Y!,1D/W< 9!_/BM2*6.>,20N'1NA!KFVM52T\NZ+*L+EGC+#<RD#D'N,BI
MK&]6.-60+"^W[KG"3@=P>S4@.AHJ*WN$N8@\9]B#U4^AJ6D 4444 %%%% !1
M110 4444 %0/)*UP8HMJ[5!9FYQGL/RJ?Z546XB6^D!EC 95 Y[C.?Z4 3QK
M(K$R2!QC@!<8J2BB@ HHHH **** "BBB@ I#TI:0]* -Q/\ 5K]!10G^K7Z"
MBF,Q7_UC?[QI*5_]8W^\:2D(***I7U^;-T41,^[G.* +M,E3S873)&X$9':H
M!? C_CWN/^_=+]M'_/O<?]^Z &K;2.R&8JHC&T>42"?\XJ3[*O\ ?E_[^&F_
M;1_S[W'_ '[H^VC_ )][C_OW0 [[*O\ STE_[[-,MLK<7$>YF5"NW<<XR,TO
MVT?\^]Q_W[J&.XV7$SFWN-LA!'[OT&* +U+57[</^?>X_P"_='VX?\^]Q_W[
M_P#KT 6J*J_;A_S[W'_?O_Z] OD+JK13)N8*"R8&30!:HHHH **** "BBB@
MHHHH *HSN;N2);?>55B3*!\H^5AD>O)J6^)%J1G 9E5CZ D9JQC P!@#@#TH
M *6BB@!C1HZ%&4%3U&*@8BVNE?D12+M8GIN'0GZCO5JD*AE((R",$>M !2U7
ML239KDY +*I]5#$ _D!5B@ HHHH **** "BBB@ HHHH **** "JDF3J(V!2W
MV=L!NGWA5NJ#WELFJ#?<0KMA93F0<'<.* +<40B!).YV^\QZG_/I4E5O[0L_
M^?N#_OZO^-6 P90000>A!ZT +5:]^Y#_ -=X_P#T(4Y[RUB<I)<PHPZJT@!%
M5KN^M&2+;=0'$T9.)!TW4 :%%-5E= R,&5N00>#3J "BBB@ HHHH **** "L
M_6#-]CV02>62"6XZ@#I[5H51U.Q>]@ ADV2K]TGH<]0: ,":WN9&\Z>1P-P$
M@!&X<<$@>GK4U_ILEHD<UJRS1/P23@DGW'49YH%K)+>ND[+#>2,"F"?DP#V]
M*=.ET-)+OM6.4@B*)=V"#R?;Z"J 674Y)F@;[,OF(6CW,05R1USVJMOAN+&(
MPNRS;BIROR^Q],U<M9!/'<6TUF69MH*8V@<=?6IK70F6 )-,RJ,D*#]W(Q0
M[2(XXID5&;S1&5E5VR01T_#TK9JE;6!@OGG>02;HP@)')QW-7:0!1112 ***
M* "BBB@ HHHH K77[QHK?H)6);_=7M4<=ALO7<I'Y3=%Q[ 8QT[$Y]Z6ZB66
M\M5?.,.>"1V'I3_L$'_33_OXW^- "VI*M-#U$3[5SZ$ @?K5BJEG&L5Q=HF<
M"1>IS_ M6Z "BBB@ HHHH **** "D/2EI#TH W$_U:_044)_JU^@HIC,5_\
M6-_O&DI7_P!8W^\::3M4GDX&>!FD(6FLBMC<H;'3(SBL=?%6G?VE:V$R7UM<
MW>[R%N;&6+S,#)P64 \4S3/&6B:OK$NE6EQ(+Z(-NAF@>(_*?F'S 9(STHL!
MNTE(\BQQL\C!$4$LS'  '>L[1]?LM>A$^FK=- R[DFDM9(T<9Q\K, &_"@#2
MHK+L/$NDZGKE[H]E=>9?6/\ KXMC#;SCJ1@_A5?_ (3/1%\1+H<MQ+#J#-M6
M.:W= QQD ,1CG''K0!N4M%% !1110 E5[W[D/_79/YU9K/O[I%\L,P4"12,^
MQH OTM1Q2B1>V?K3\_2@!:*2EH **9(_EIG\JK17Z2R%596QUQVH N44E+0
MUT61"CC(88(J#9=Q_+&T4B]C(2&_059K&L?%>BZCKUQHUG>"2^M\[X]C ''!
MPQ&&QD9P: -#-]_<MO\ OMO\*,WW]RV_[[;_  K';QUX?2^N[-KUA<6<R03)
MY+_*[MM4=.>>XK4BU6TFU>?3(Y2;NWB661-A&%;.#GH>E $F;[^Y;?\ ?;?X
M4%+J4%96CC0]?*))(^IQBJ.L>)=/T*>"+4!=AKAQ'$8K220.YZ("JD;N.G6H
M[SQAHVG:G!I]]</!=7$#7$<3PN"4"DG/'!P#P<&G8#950B!5  48 %.K @\9
MZ1=RK'8_;;MV@2XQ;V,LFU''RDX7CZ'FMX'*@X(SZBD M%%0R3.)1%#'O?;N
M.3@ 4 345'#*)H@X&,]C4E !1110 44A.U23Q54WBB4(2H)Z*3S0!;HJ&>Y6
M"U>=DED51DK%&9'/L% )-9NE^*-,UC3Y[ZQ:X-K &+RR6TD:G;D,!N R1@Y
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
MJ-0.^HKEO!>H75Y'=Q:E?W#WUNRQW%C=*F^W<#[RLH&Y&Z@X_&NHJ0%HJO\
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
MY&>:TMY&:'[.S-"#F+^YT^[[=*U,T9I@8UCIV@:9-YVG6%K:R;=N^& *<>G
MJ>&+2+>R>S@MH([60MO@2'"-NY;(QCD]:TLT9I 8UKIGAZQCGCL].M($N$V3
M".W"B1?0X'(]JCM="T2*.9=-T&S2.=3'+B!460=P>.:W<FH'@PWF0'RW[C^%
MOJ* *.GZ-!I7F?V78V%GYN#)Y$.S=CIG'6K4L-W*FUGB"YY R-WM3_-N.]L#
M[B0<T>=<?\^O_D04 12)*-BW 'D 8(A!'TS[5-:[Q!^\S]X[=W7&>,TGG7'_
M #Z_^1!_A4-U<W:6[-';8;UW X_"F!8FMUEZX(/4$9S3HHQ&FT8_ 5'9R2RV
MJO.NUSU%6*0&.GA;1D\2-KRV*C4F&#-O;TQG;G&<#&<9HO/"FBW_ -M-W9B0
MWTB2SMYC ET^ZP(/RD?[.*V** ,/7/"&B^)&A;6K>6Z$ _=H;F15'OM# $GU
M[U->>&M-O;R"[D2>*>WB,,4EM<R0E4/\/R,..!6M13N!FR^']-N+B">Y@:>2
MW@>W1II6?,;_ '@V3\V<=3DU5_X0_1A#8Q1Q7$2Z>K+:M%=RHT2MU 8,#BMR
MB@# U7P5HFN6]O#J\5S>1VW^K66]F//J?FY/.,G/'%;D44<$*0P(J1QJ%55&
M  .@I]%+4 J"[_X]S_O+_,5/4%W_ ,>Y_P!Y?YB@"<]:*#UHH *0]*6D/2@#
M<3_5K]!10G^K7Z"BF,Q7_P!8W^\:2E?_ %C?[QI*0@HHHH *2EHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH :Z+(A5QD'J*9%;I
M$Q(W,Q&-S')QZ5+10 E+110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 5!=_\>Y_WE_F*GJ"\S]F.W&=RXS]10!/
M140FPP252C$\=P?QJ6@ I#TI:0]* -Q/]6OT%%"?ZM?H**8S%?\ UC?[QI*5
M_P#6-_O&DI""BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ J"[_P"/<_[R_P#H0J>H+O\ X]S_ +R_
MS% !<?ZV#_KI_0U/56ZD(F7:!^Z_>')QD<BK*G<H([C- "TAZ4M(>E &XG^K
M7Z"BA/\ 5K]!13&8K_ZQO]XTE*_^L;_>-)2$%%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !4%W_Q[
MG_>7^8J>HKA"\!"C)R#CUP<T /=%<C>H;!R,C.*=34<.H9>0:=0 4AZ4M(>E
M &XG^K7Z"BA/]6OT%%,9QTWBO1(YY$>_4,KD$>6_!!^E,_X2W0_^@@G_ '[?
M_"O,[_\ Y"5U_P!=W_\ 0C5>O967TVKW/GI9G53:LCU3_A+=#_Z""?\ ?M_\
M*/\ A+=#_P"@@G_?M_\ "O*Z*?\ 9]/NR?[4J]D>J?\ "6Z'_P!!!/\ OV_^
M%'_"6Z'_ -!!/^_;_P"%>5T4?V?3[L/[4J]D>J?\);H?_003_OV_^%'_  EN
MA_\ 003_ +]O_A7E=%']GT^[#^U*O9'JG_"6Z'_T$$_[]O\ X4?\);H?_003
M_OV_^%>5T4?V?3[L/[4J]D>J?\);H?\ T$$_[]O_ (4?\);H?_003_OV_P#A
M7E=%']GT^[#^U*O9'JG_  ENA_\ 003_ +]O_A1_PENA_P#003_OV_\ A7E=
M%']GT^[#^U*O9'JG_"6Z'_T$$_[]O_A1_P );H?_ $$$_P"_;_X5Y711_9]/
MNP_M2KV1ZI_PENA_]!!/^_;_ .%'_"6Z'_T$$_[]O_A7E=%']GT^[#^U*O9'
MJG_"6Z'_ -!!/^_;_P"%'_"6Z'_T$$_[]O\ X5Y711_9]/NP_M2KV1ZI_P )
M;H?_ $$$_P"_;_X5HZ;>V^L1/)ILGGHAVLP4C!_'%>-5[9X/TO\ LKPQ:Q,N
M)9%\V3ZMS_+ KEQ6&IT8IIZL[L'BZF(FTUHB?[)/_P \S^8H^R3_ //,_F*U
MJ*\\]2QD_9)_^>9_,4?9)_\ GF?S%:U%(9D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9
M_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9
M_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U(Q"J2>@H$8KHT;;7&#Z4E.
MD<R2,QZDYIM $#_N&,H^X?OCT]ZGJ"\_X\Y?]VISUH *0]*6D/2@#<3_ %:_
M044)_JU^@HIC/G^__P"0G=?]=W_]"-5ZL7__ "$[K_KN_P#Z$:KU]5'X4?%3
M^)A171^&M(M-0TO4KJZL[B]DM=GEPV[E6;.<] ?2M6+PKIL^HZ07MKJT2]\T
M2V<TA\P%5)!!ZUSRQ,(R:?0Z(86<XJ2ZG#T5V+Z!I\]EJ#?V1?Z6;6)I$N+E
MR4<CM@@=?:JDNGZ)HMM9)K,-S<W-U$)G,4NP0HW3ZFA8B+6B=Q/"R6[5CF:*
M[)?#.FZ<=8DU!)KR&SCBE@V2>675\]??_"JT6BZ5JEM97VFI-#$;V.UN;>23
M<1N/4-]*/K,/D/ZK/Y]CEJ*Z>RT&QG\>SZ3(K_9$9P 'YX&1S4,.F:9IVB1:
MEJ\<]R;J5T@@BDV853@L3_GK5.O'8A8>75G/45L7)T&WU8/;QW%Y9-$"8B_E
MM&Q[;N^*Z,Z'X=.NZ?IHL+D&]A6;?]I/RY&<8QSTI2KJ-KIE0PSE>S1PE%=,
M^E:3I&F1WFK13W+W4KB""*79M13C<3ZU?T[PII5SK*EY)3IMQ8M=1,S89,$
M@D=<4GB8)7Z L+-NRM<XJBNFD\-1V>E:V]X&:XL63R)%;"LK'@X[Y!KF:VA4
MC.]C&I3E3MS!1115F84444 :WAC3/[6\1VEJ1F/?OD_W5Y/^'XU[D!VKS[X7
MZ7MANM3D7ESY,9([#D_K_*O0:\+&U.>K9=#Z;+J7)1YNYS$^N:O]EN=7MDM&
MTRVF=#;-&WG2*CE&<2;MHY!(7:<@=1GBQ;^+;:?4A;?8[N.%IY+9+MP@C:1%
M+%1\V[HI.=N.,9S1<>%A/)+"-1N$TR>0RS6("[68G<P#8W!2>2 >Y]:E7PS;
M+)"QFD(COY;T+@8+2(ZE?IAS^0KBT/2*Y\80K8?:Y--OHXI2@M"_E@78<_*4
M._"Y'.'*G'.*T+/6H+[0_P"T[>&9U 8- BAI ZL59, D$A@1P<=\XYK*D\&B
M?2_L%SJ4UQ!"4^R)+#&RVX3[ORD8?CC+9XK03P_$OAEM&$[JCH5::)5C.2<Y
M 4 #GL!C'% #](UM=9AN?+MI+>>VD\N2&9T;#;0P^9&9<$$=":P+CQ/J]J-0
MM6ETVXN[=K=?,AA?RX&EE5#&P+Y<@-G(*Y]!6QH'AN/0H[Q8[DNUXXD?9"D(
M5@H7*J@ ' 'XU4G\(R7D,GV[6;F>YQ&L-PT48,0202#@##<J,DT 7;"]U&'6
M/[,UB2UGDDA,\,]K"T0PK!64JS-SR"#NYYX&.:JZCKU_]HN]*CLOLD$[Q):S
M(WFW 1MK$2;@J9(. 5;H"3S@7M.T:2UO6OK^_DU"[,?E)*\:H$3.2 JC')QD
M^P]*K3^&I'FG6UU:ZM;*YD,L]K&%^9F.6VN1N4-W /<^M #6\2 >)FTW$0C$
M94;F^?S@N_;P>FWVZ@\U4TK6]:.GZ/J.JR6$UKJBQ#R[>V>)X&D7<O)D8,,\
M'A?7VJ])X2TYTWJBI>^>)_MHB7S<[LD;L="OR_0U#IGA62RCL(+S5I[ZVTX+
M]F@>)$"E5VJ25&6('KWYH GU?Q-%H]T\+V%[="&!;B:2W52L49)&3E@3RO0
MD]@>:C'BR(QRJ=-O1>).D"69\OS)69=ZD'?M *@MRPP <X/%7+_0XM0DO'DF
MD0W=JMLP7'R@,QR/?YC5:[\,1SW,]W!>2V]U)-%-%*JJWDLB>7P",'*D@@^M
M %>_\8)%I)N-.L+JZN/L\LS0A5S!Y>5;>"PSAAC"DDXXSUI;?QC:O>VMG/%)
MYD@B269"@CCED4,J8+;^<CD CYADT3^#T:Q6&TU*XM9FADAGN%56:99&+/U&
M =Q)!'3H*(O!MI!K4-_'-R@CWHT$;-(R*%#;RNY>%7(! X]S1H ZP\123Z7H
MES=!4?4971UCC)'"2-QEOE^YU^;TQSD6]$\01ZW#)+%9W,$:J'1Y2A$BGH1L
M9L'_ &6PP[BF0>&H(++2K9;F;&F2-)&W&6+(Z<_]_"?P%,T3PPFCW%S<-=M<
MS7*A&?R4BR 2<L$ #-D\L>:- *;>.[1--M;UM/O56ZC:>-':)6\D $RX+XQ\
MPX^\?2KUQXFM[:^MH6M+EX+EHT2[&P1[I" H +!FY9<E5(&>3P<4[KP1:7.F
M:7:BXPVG6XMDEDMXY2\> #PX(!.T'(Y%+?>"X+S5X[[[8Z".2&54,*.5:+;M
MVL1E =@R!@'GUHT BN?&9BU*!8]/N#I["<M=,%VR"(#<4PV0 <YW 9P<9KHK
M.]2^69HE8+%*T6XXPY'4C';.1]0:PI/"K0W'GP7,ES# LWV?3I"J19E^\"X4
MG&<^N,FM'1],GTJTL[03![>"VV2#'+RY!+Y]_F_.@#G;;QQJ+7FRXT2=XP;W
M<D)C+A8)54-DR;<88Y[DC@8K6?QEIR7]O;HDLD<PA+3@H%B,O^K!!8,<Y'0'
M&1G%+!X3A@O+B<W<S"9;I%0JN(Q.ZNV#C)PRG&?6H5\%6B:E9W<<W_'O'"CA
M[>-VE\H *=Y4E>@SMQFC0"WX@\0-H\,B6ME/>W0MI+C9"%Q&JC[S99<C.!@9
M)["JEGXL,MLS-:RW5R;B.".VMT569F@24X+O@@!B<DKTQCC)NZUH']K,9(+Z
M:QF>![:22)58O$W5?F''/((K-N_#%S8V9?0I&EO1=).CR2K'Y>(5B/\  P(*
MKT([^U&@$%YXXE\J*73;":4R&US;RHBN@EG,1RQD S\N .Q())&<7-3\7_8D
MU")+&>*X@M9Y[=[@+LF,:Y/RAMX'^\%R.E06?@HKID:W5_(+SRH TD8#!7BF
M,P89'/S-@Y["DE\ 6\UW<327\I\Z*XBSY,>\+,#N!DQN;&> 3QQ1H >(O%M_
MHURL=MIXFC_LXW9EX(W"1%VXW X^;TZE>V:N'Q=&"L)TJ_%XUW]D^R?NMZOY
M9E!)W[<;!GK4FK^%XM7DB9[N6'9;-;,$53O0LK=QP04'2I3X<@.M?VEY\GF?
M;!=[,#;N\@PX^F#GZT 0VGB^QO-0GM8XI_W:R&*10K^?Y9PX158OD'C! SVS
M3(_%\#PW'F6%U%=0/&@M"T3/(TA(0 JY7)*MU88QSBF6_@JTM[J^DCN&CCNX
MY4"Q11H\?F<L?, WDY)QD\5%9^!H;1;EEOF$\QB=98K:.,1O&6*OM48)^8YS
MUHT L6/B=Y='N[Z_LY8GBO7M(K50/,9MP55^]MW$G&<[>^<4ZX\6):Q@SZ7J
M"2)&TUU&5CW6L2G!=OGPPX.-A8G!Q3HO# 31YK.6_N)IY;HW8NF50R2[@P(
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
M#[I.,'-='IWA^PTJX:>T28N4\M3-</+Y:9SM0,3L7(' P.!Z"J?_  A>BGS
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
M$]#_ .@='_WV_P#C1_PB>A_] Z/_ +[?_&C^T*?9A_9=7NCRJBO5?^$3T/\
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
MM*LVLYEAL+;S#&P3$*]<'':J4DWNR'%I;(;_ &9I/_/O!_WU_P#7H_LS2?\
MGW@_[Z_^O5>**V6% _A]RP4!O]'AZX_WJDT_3;9HYGN--AC+SLR))"F0O&.F
M:IZ=7]Y*NW9)?<2?V7I7_/O!_P!]?_7IT<R64RPM*IMW.(FW?</]T^WI^7I4
MO]F6'_/A:_\ ?A?\*IZMI]E'I%T\=G;HZQDAEA4$'ZXI1<9.PY*45=6T-:B@
M_>/UHK$W"BBB@ HHHH **** "BBB@ HHHH S;HA]0F\R3RT@M=P;/W2Q()^N
M%Q^=4+9)()(7/^B^9A=[@X!VY)Y/)/3GH!6I>QA)UN67?%L,<ZXSE3R#^!'Y
M$U"L-Q"7BLXHIK23#1^;)N51CD=^IKIC)<MCDE%\UR&>1I[*.Y#;+@2^2D\;
M%01G&X^H]O6K@_=ZX5'_ "VM]S\8Y5@ ?R8_E4(ADNP[ZFIMX(P-L0<!3CJ3
M[<<>U0V^H+)J$TIMYBX0*D:IR(^N[\3VZ\"AJZ:0)I--FS14<,T=Q$)(7#*>
MXJ2N;8ZD[A1110,**** "J.HP2S>6R*LL<88O$6*[^,<'Z9_.KU(Q"C+8 ]Z
MJ+L[DR2DK,R%%HZXBOA'!,JRM"<;B  ?J. ,CVJQ9M)/?-=K&8[>6( %SRV"
M=I [<,>OM56&YM[J"1(])=HBY,>U %D.<9SQCZUJ6DR7%I'+&FQ6'"_W>V*V
MG=(PA9O<S/LZPRR17[!'E#R+<J_HP/(.,$?+[4\NA60I*;Z>Y4QYC( "@<^P
MQFIM4N88%AWVHNY6?]W&!D@@9S^GZBFQ7$ U!&^PO"\WR^:Z@$G&<8^G>FKM
M7):2E:XZ2VNY=/MHSY9EC*F2/.U7P.F1GO5>/[-(B^3>?91.@1X7P6...,]#
MU%:_3VK(2[MII+F)-+>2$L09(XP5D8<'GCTZU,)-HN<4FM2: O/?Q36\16VC
MC:+>Q^\!Z#J.>]:55K"5);4>7%Y(1BACR#M(ZCBK-9S>MC2FE:Z"BBBH- HH
MHH **** "BBB@ HHHH Q=0_Y"'_;6+_T%JT;*-/L%OE%_P!4O\(]*SM0_P"0
MA_VUB_\ 06J=I+Z/3['^SX8Y2RJ)/,; "X'-=,DW%(Y(M*;8^_O8+52D8C,_
M'RE<A03U/L/K3#<W$)C>[M;>. L%DD5LXSWZ<#Z^M5Y8YIM09;E?LS2 "-E&
MY78 X.?4'VJ1(VLDE:4+ )(Q&L:,7,C_ -X#_/O1RI)(7-)MLN)=64X=;>6"
M1PI.$()%940?SK6220R-(87)( P2C>@JP#!9PV+2(ML/)=3NXP<#J:@3[UD/
M]F#K_N-515KV%)WM<U[#_D'6_P#UR7^56*KV'_(.M_\ KDO\JL5RRW9UQ^%!
M1112*"BBB@ HHHH **** "BBB@"G/_R%;+_=E_D*A:71X;PR/+;)<*QRQ< @
MU-/_ ,A6R_W9?Y"G//>K(1'9HR@\-]HQD?3;7,W:_J=*5[>A2+: S%FDM"2<
MD^8/\:M6']G9?^SC">!O\ML_G3UGO2K;K-%('RCS\Y.?IQ4L+S2*3<0B(YX
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
M6S1VT=ND:D% 1^[Z],>O'Y42G*+T5QPA&2NW8TJ,UE1:=<QP*A8?*X&<Y.S
M!_$=*CDTEY8KJ(P(AEEW^:=AW#=G&,?SK-U9_P IHJ4/YC:HK-BM9UO%+0IL
M6'9O)!8<#Y1Z#/MBH8M-E72T@CA6WE1MVX%?G..IV@#VH]K/^47LH?S&O16?
M):2-*A>!)<0[%)(_=-SDC/KQ^52Z9;_9;%(3;B KU *_-[_* *N,Y.5FB)4X
MJ-TRY2'I2TAZ5J9&XG^K7Z"BA/\ 5K]!13&8K_ZQO]XU!]DA^W"[V_O@GE[M
MQ^[GICI4[_ZQO]XUA:]+/#-'+%=R"&-"9X(7VN%_YZ#UQZ54$Y.R,JDE&-VC
M3FT^VN+M;F:(/*J&,%CT!Z\=*BCT:QC6%5@RL$;1(K,6 5NHY/-9L]]=+J5J
MEE/]JC>Q>3+.$#XQA^ >:JW5Y=?\(1;WRWDZ7.U,LKXW98 Y]>*W4)Z*YSNI
M3U=MC>.E6ATS^SS&3;8 V%STSGKG-27-E!=B/S@X,9RC)(R$?B#63J<D\&HZ
M=;02WDD<BR;Q%(-[X'&22/YU5DFU.!=+@O)+HR2RR"1(I%$C+SM!.0/UI*G)
MZW&ZL5=<IT-G906%JMO:)LB4D@9)Y)R>O-35S$TFJPP:=#/+,LLUTZE3,%9D
MY(!89J[KS2V/AR26&[GCEC*GS/-W'D@')[CFI=-WWW*C52B[+8VZ*R?#EW/=
MZ:YGE,ZQS/''.>LJ@\&M:LIQ<9.+-H24XJ2"BBBI+"BBB@ HHHH **** "L_
M[3+;ZDMJD.Z)CD-Z9_I6A1F@"GJL]Q:Z9/<6K1AH49R)$+!@!TX(Q]:H7.J7
MMMX5&I8ADG=$=4$9"C=CC&XD]?6M.\LX[ZV:"9I%C8881OMW#T/M4/\ 9-L=
M-^PN97@&W :0D@#H ?3BMHR@DKKJ83C4<GROH9^AZ]/K+7(6.(-#$A"X(_>$
M'(/MD4_3M4O[B.Y:Z%NLENK>;"$9'C<=.YW*1WXJY:Z-96<UU);QLK77^M^<
MX/7IZ=:2'1+2"9I09G=HO)S)*6^3TJY2I7=EH9QA622;U,6/Q+>-:),IM9RU
ML\SK'&P\IAR 3N.?TK7L;VY?3FO;ME9!'OV+;-&V<9_B8Y'OBK(T^W&E?V=A
MOLWE^7MW'.WZTMK9):+M2:>1-NT++(6 %*4Z;V0X0JIZOI^)2L+G4[[21=J]
MFKS1[H8S&V%STW-N.>/05#I-[JVHVLTTS6<85FC7;&Y^93@Y!;D?B*T;+38=
M/!6V>81\XB:0E%R<\#M1%IL%O:26\#2Q)(Y<E'(;).3@TN>&N@_9U--?Q,RT
MUNX_X1B35[T1-\I*QQ(1@@D8)+'V]*J7'B34;6PNEE@MVOH'C^6,,497&1WS
MFMNUTBUL[%[./S'MW!4QR/N !ZXSTZU%#X>T^"S^S1QOY?FK*<R$DL.F3Z>U
M6IT4W=&<J==I69%H&M-K0N7P@2)E"[0<Y*@G/XYK7JGI^E6FF&8V:,GGOO<%
MLC/MZ5<K"HXN=X['324U!*;NR!_W$WF_P/P_L>Q_I4D[F*WDD7DJI89]0*>R
MAE*MR#P:J[XUC>VNI  !@%FQN4U*M?4MWMH8.C>(]4O-1MXM0LXH()HFD61%
M;Y\#/'-6=-U^YNKV(7$426]VLC6I0G>-A_CY[^U7H;33;=[5HI5!M8S'%^]Z
M*?7UIEKIVDV5Y+=6[(LDN0<RY"Y.3@=OPKI=2D[^Z<:IUE;WKD^CWLFHZ7%<
MS!5=R00F<<$CO67;Z]>+KYLKM('@,Q@5HE*MNV[@2"3QBK]I9V-B%6WO95C4
MDB,W&5Y]JCM],TFVU)K])=]RV27DFW<GN!ZU*E23=UN:2C6:C9[;C=)U&^U)
MY2S1(D<KIC[,_(!QPY;&?PJM8:]=OKAL[Q(&C:62%'A4JVY #D@D\$'\ZO6U
MG8VC$V]Y(BERYC^T?+D]>*99Z9I-E?O>Q2[KB3.7DFW<GJ?K1S4M;HGDK>[K
MZFO4,\A "1_ZQ_N^WO0;NW SYR''8,#1 C<RRC#OV_NCTKG.L;]B@ &4S@8R
M2:!96X&!&!]#TJQ10!7WM;\2G='T#GM['_&G/);2#$CQMSW(J7&:;Y4?_/-/
M^^10!!MLO6/\Z;LL>Y3\ZM;$[(OY4NU?[H_*@"DOV56&VX4(&WA,]_KUJ625
M+@K#$X8,<O@]%'^-6,#T'Y44 +1110!C^(-3O=-2V&G6Z7$LTA78P))P,\8(
MYXJO::QJ%SX;N;]T@AN+=I-T9C8CY1T^]D'W_2MF>SAN9[>64$O;OOC(.,'&
M/QJN='M?L<MJIF2*9V>0)(06+=1GT]JZ(SI\J36IRRA5YW)/3L5#JEW%ING7
M$GDN]Y)&"%C*A589_O'GWJWJ]])86\,D*J2\Z1G>,\,<<>](=%M6LH;5GG,<
M#!HCYIW(1TP?2G3:3#<6_DW$US*N\2!FF)92.F#2YJ=TQJ-7E:&:Y?RZ9IQG
M@5"_F*GSJ6&"<= 1FB6>]AT>>Y,D32(A==ULR8 '0J6S3YM)AN+5H+B:YE1F
M#9>8D@@Y&#VI[:<DEI);23W+I)PQ:4EL>F?2DI0213C4;;\BCH&L3ZGYT=Y'
M&LT:H^8L[2KJ".O0ULU2TW2K328&BLD959MS%F+$\8ZFKM34<7+W=BJ2FH)3
M>H4445F:A1110 4444 'I61-JM]'JPLDTY6W LCFX W*,9.,>_2M;('>JSV<
M;ZE%>[V#Q1M& ,8(-8U5)I<KM_D;T7!-\ZOI^)4U+6C87'E16QG\N/S9R&V^
M6F<9Z<_2I+_5?LJP+:0?:IK@%HXPVW*@9)SBDU#18-1N%E:62([=D@C./-7.
M=I]J??Z7%?QQ!97MWA^Y)#P5&,8^E<\O;WE9^AO'ZO:-UZC(=82X>Q$*92\5
MFW9Y0CM[T_4-0>RGMHHXXV:=BH,DFQ5P,]<&F'2(E^Q_99V@-HI5-H#9R.<Y
MI\NFI=26SW4QG:!BP!1<-D=",4U[9PMU!JBIJ2VU*,WB3R=+6Z^R^9(9FB\M
M9,@XSD@XY'%6-0U>:TT^*]MK07$+J&9C+MV9QCC'/6I;K1[6\GA>5?W<*LJP
MJ %YZGBD_LB)M%&F&>1HP,;^-V <BI4<1=IOIIZE<V&LFEUU]!CZN]JUH-0@
M6W-PS*Q\W<$QT.<<YJ!]?D_LG^T(K5'C\PQE3,03\VT$?+6C-9I/=VTYD(>V
M)*@8^;(QS5*70DDT_P"Q+=RK$9#(V%4DG=N[^AHDJ^MGT_R'!X?1R77\-0U+
M7&TJ6S2Z@4^><.R2<1\CGD<_I2+KP?3[>:.#,UR[+'%OXX/)+8X''I4UYH\>
MH"/[7,\C)&T9( &<]\#Z=JCCT&&&UM88KAP;4MM=E5MV>H((Q2:Q/.[/3H-?
M5>176O7L:,#O)"'D$88_\\GWK^>!_*I:JZ?8QZ?9K;0L6 );)QG).3P.G6K5
M=L&^57W."I;F=M@I#TI:0]*L@W$_U:_044)_JU^@HIC,5_\ 6-_O&H)[2VNM
MOVJWAGV]/,C#8^F>E3O_ *QO]XTE*[6Q+2>C(Q;PAE(AC!5=JD(.%]![>U1O
MI]E*B))9V[I&,(K1*0H]ACBK%%.[[BY5V(4M;>/R_+@B3RP0FV,#9GKCT_"G
MM&CNKNBLZ'*L1DK]/2GT47>X[*UB*>VM[I0MS!%,H.0)$#8/XTPV%D85A-G;
MF)3E4,2[0?4#%6**$V@Y4^@R.-(8UCA18T4854& /PI]%%+<$DM@HHHH&%%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 0W1F%NQM@#)V!IL
M9NS&OF+$&QSR:L44 0XN&X)C0=RN213HXDC'RCGJ6/))J2B@!,#T%&!Z"EHH
M 3 ]!1@>@I:* $P/048'H*6B@!,#T'Y4M%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% &;KRQ/HUPLL?F,481CRR
MYW8XP .#[UFW$"2^"U@MH65RL:NJQ%3NXR<8Y^M=)6=;:P+J\>&.UN/W;F-V
M('RGW&<@'UQ7'6IQ<O>=KJQVT*DU!<JO9WW,GP[!<13:A'?1282-(@0I&\*"
M.#WXJ70H+>*[FMUMG9-GR3F)HR5)Y1^F2/6M)=5$E]+:0VTDC0L%8[T';/ )
MSWIE]KUM8:@+2=)"YC,@88QP"<=?:N>,*5.,6YZ)_P!(Z)U*U64DH:M=/S*.
MEZ3;VUWJ3QVOE^6Y6 X/"E.<>M4=#L9XKNU-U!Y?[IC$T4.TDX(*R'U^M;5Q
MKJV\5M)]CNI([A5*,JK@$]%//6M&"4S0)(T;Q%@"4DX9?8U4:%*<DH/;]12Q
M%:$6YQW\^VAS5G%,_P#9<$<<BS6[2F3=&0$R#@Y/'>KV@0VZ6?E36Y6]^83N
M\1!<YY.['(/UJ<ZY_P 3 V7]GWGF#G.U<%<XW=>E/O=;M[&\6WE61^ 9'096
M($X!;TI4XTH/F<MM-@J2K37)RVOKOZ_YE'2-)MK;6+YEM?+$+KY#$'@%><>M
M-TN.U7Q'?/';[ P3R&^SE1G!W8..*Z >QJG#J0N;R6"WMY)$A?8\H*A0<<CD
MY./:MO84X<JOUOL9*O4GS.W2VYSMM;70UB4F&47'[TW,I4[)4(^4+V/:HO#]
MI=VNK6D<T,ODB)I%8H1@L.5SVZ5NW?B2UM+VXM98Y2\";SC&&Z=.?>K5SJ2P
M300)%)/-."5C0C.!W.3P*Y%0HN7,IZIG6Z]?EY73TDOT,C2(H+?63'%:R,C;
MFCE:)E:,_P 2N>A'H>:Z2FJQ9 64J2,E20<>W%.KTJ-/V<;)GF5JKJ2NT%(>
ME+2'I6Q@;B?ZM?H**$_U:_044QF*_P#K&_WC24K_ .L;_>-)2$%%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 E9BZ;<_VNEZUVGRY#;8
ML&1>RL<XX]<5J45G*G&=KFD*DH)VZF9#IL]OJ-Q<PR6Y$[AB'A)9>,8!#5!J
M_AX:K/+*TXC9HU1/DR5(.<]>X.,4[Q)YITV)(9GA:2=$WHQ!&:IZ5-/IECJO
MVVX>X>U?[S,3D[>@STKAJ*GS>QE'W=[GH4G5Y?;1E[VUC3ETLR:=96WG &U>
M-BQ7[VW\>,UHUSGAF>[1I[2]:5IBBS1^<<G!].O&:FT22*2"1KBX9M0#2"6-
MYCE3D\!<]/PJZ-6+2<5:_P"AG6HSNU)WMV\S2^Q'^V?MWF<>1Y6S'/7.<U2U
M#0OMMXTJ7!BBF"BYBVY\P \<]JSK&XNW.D?:)OW,CRY/F-N;@_>J;2I8&N]5
M$5SO,;$0#[06^7;S@9YY[UFZE.HK<N[_ $N:JG4INZEJEV\['1 ;5  P ,"J
M%O836=[.]O-&+>>3S&B9"2I[X.>]<A:7M^FR":XF(^SR3(_F$Y!7^A%=-HS6
M[:>&-RC3&++F*X9V48ZD$GG\*=/$1KR2Y;6)JX:6'3]Z]_F0ZIX8&I3SS?:!
M&\CJRGR\[0!@CKS6A=:=))=6]U:RK%/ I0ED+!U/8@$=ZS=!EC&H/;&Z>XD5
M-R2+*661,]6!SAAT[5T-:4:5*:<K6;,Z]:K!J#>BV&KNVCS""V.2HP,TZBBN
MXX I#TI:0]* -Q/]6OT%%"?ZM?H**8S%?_6-_O&DI7_UC?[QI*0@HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@!.O6C ].O6EHI
M60[L3'M1M&<X&?7%+119=@NQ,#C@4@11T4#Z"G44<JOL',^XFT<<#CIQ0%4<
M@ 'V%+11RH.9]Q H'0 ?04M%%"26P784444Q!2'I2TAZ4 ;B?ZM?H**$_P!6
MOT%%,94O+7?F2,?-W'K6?6Y5"\M<9EC''\0]/>@"E1112$%%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4AZ4M(>E &XG^K7Z"BA/]6OT%%,8M&*** *4FGJSED?:#SC&:;_
M &=_TU_\=_\ KT44@#^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ .._
M_7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\
MX[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:
M_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[
M_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #
M^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HH
MH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]
M>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#C
MO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_
M ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^
MFO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[
M._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7
MH_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_
M ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^
M._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_I
MK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^S
MO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH
M/[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->B
MB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\
MUZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[
J_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** +R_*H'H,4444P/__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>15
<FILENAME>protograph.jpg
<TEXT>
begin 644 protograph.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_VP!#  (! 0(! 0(" @(" @(" P4# P,#
M P8$! ,%!P8'!P<&!P<("0L)" @*" <'"@T*"@L,# P,!PD.#PT,#@L,# S_
MVP!# 0(" @,# P8# P8," <(# P,# P,# P,# P,# P,# P,# P,# P,# P,
M# P,# P,# P,# P,# P,# P,# P,# S_P  1" 'N E<# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#]_*XK5?VD
M_AUH6J7-E>^/O!5G>V<K07%O/KEM'+!(I*LCJ7!5@000>017:UP7[./_ "3[
M4/\ L:/$7_IZOJ #_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:
M?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO
M:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+
M_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/A
MA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_
M ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A
M06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\
MQRC_ (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\
MAJCX8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA
M_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?
MP'_X4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A0
M6G_QRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*
M[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO:* .
M"_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+_AJC
MX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4
M?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_ ?\
MX4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A06G_
M ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_
M (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX
M8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%
M'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X
M4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_Q
MRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@
M#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:
MH^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]
M%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_
M .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I
M_P#'*/\ AJCX8?\ 11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H
M_P"&J/AA_P!%'\!_^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H
M^&'_ $4?P'_X4%I_\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*/\ AJCX8?\
M11_ ?_A06G_QRN]HH X+_AJCX8?]%'\!_P#A06G_ ,<H_P"&J/AA_P!%'\!_
M^%!:?_'*[VB@#@O^&J/AA_T4?P'_ .%!:?\ QRC_ (:H^&'_ $4?P'_X4%I_
M\<KO:* ."_X:H^&'_11_ ?\ X4%I_P#'*W_!'Q4\,?$S[3_PC?B/0?$'V+9]
MH_LW4(KO[/OW;=_EL=N=K8SUVGTK>K@O#W_)SWB__L5]#_\ 2O6* .]HHHH
M*X+]G'_DGVH?]C1XB_\ 3U?5WM<%^SC_ ,D^U#_L:/$7_IZOJ .]HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **_&_\ X*%1>/\ ]J'_ (.2O /P"@^.?QU^%WP]UOX;_P!JW%M\/_&,^AO]
MIB&HRB0* \19C$BLS1EBJ@9&!AW_  2X_;N^)O[*?_!2']J_]G?XE?$CQ=\:
M_AM\"/"5YXRT[Q!K16\UVWBM/LCO:M.2/.E:*[93YC\R6Q(V!F  /V.HK\^/
MV/\ _@Y?_9O_ &W/VC/ WPO\&IX]A\1^.-.O-1$NJ:7;VUEHGV6UN+N6&\F%
MPP63R+=WS$)8QE0SJ<@9OB;_ (.=/@+I)U;6-'\#_'WQC\,] OO[.U/XDZ#X
M'>X\(V,NX*0]V\J/@%DZ1$D.NT-D4 ?HS17Y$_\ !PW_ ,%P_&'[,G[('PH\
M5?LV:EXHMH_B'J%GK-K\08/#%M?^&+O3'M[W.FM-=HXCOI'CBE$/E+((X9?F
M4AE/UOXI_P""U7PP^$?['B?&7XH^$_BW\&]/N]9?0-.\,^-O"S:?XGU>Z"AE
M%O8J\A='!.'+!?D;)7C(!]?T5\3?LP?\%X?A/^T3^T?I'PDU[P7\:/@G\0?$
MT'VC0-(^)GA(Z')KR89O]'*RRJ<A'QO*!BI"EFP#]$_MN^(K_P (?L7_ !=U
M;2KVZTW5-+\%:S=V=Y:RM%/:S1V,SI)&ZD%75@""#D$ B@#U"BO@;_@V;^,O
MB_X]_P#!'[X?>)?'/BGQ'XS\1W>HZQ'<:MKNI3:C?3JFHW"('FF9G8*H"C).
M  !P!4_[0W_!P;\+_P!GSQAXPL_^%5?M'>,_#GP]U2YT?Q/XP\-> I+GPWH=
MS;3F"Y6:\EEB&V*175F4,/D.TMQD ^\J*_%'_@[(_:)\,?M/?\$2?@U\1_ .
ML'5?"WBSXD:7J.F7T:/"TD9TG6.JL R.K*058 JRD'D5]?\ PL_X.'_@3\3/
MVE_!OPVN-$^+7@W_ (66ZIX*\3^*O"<FDZ!XP+LJQ&QFD?S765F54=H54LZC
M(+#(!]WT5\._M ?\%]OA)\#?VB/%WPVTWP1\;_BCJOPZ*CQEJ/@/P<^LZ9X2
M+#=_IDOF(5P V2BN 4=<[E('VEX3\467C?PKINM:;*9].U>TBO;60H4,D4B!
MT;:0",JPX(S0!H45^0?_  21_;S\5>%/VJ/^"H_B?XF^,?'GC+P1\"O%=YJF
MFZ3<ZG+J/]C:=:7?B.26WT^&>41PYAM(D6-2B'RHP2  1ZC/_P '47[.L?P]
MT'QE'X0^.]UX%U22"UU3Q1!X++Z+X6NY1N6SO;H3;#<!>2EL9^A R010!^E=
M%?-?[;/_  5B^#7[!WP>\(^,/%FLW^M)\1#&/"&C^'+,ZCJWBHR*CI]C@!4.
M"LL7S,RKF6,9W.H.K^PM_P %$?#7[>,7BFVTWP5\5/ASXC\%O:C6/#OC_P ,
MR:%JMHER)3;R^66=61_(EP5<D;#D#(R >_T444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %<%X>_P"3GO%__8KZ
M'_Z5ZQ7>UP7A[_DY[Q?_ -BOH?\ Z5ZQ0!WM%%% !7!?LX_\D^U#_L:/$7_I
MZOJ[VN"_9Q_Y)]J'_8T>(O\ T]7U '>T444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 ?A__ ,%$OV;&_:N_X.L/
MAUX,_P"$Z^)7PV%_\*_/_M_P)K7]CZU;")=3?;%<['VHY78XV_,I([U]JV?_
M  2H^$W_  36_P""?O[1G_"OK+7=3\2^,_!.MS^(/$_B'46U+6]=D%A<LIFF
M(4?>=VPB*"S$D$\U]UT4 ?C_ /\ !"']GZX^,?\ P;!^(_#/A/3M-M?&/Q"T
M#QGI=G=B-8'N+^?[?9V\DDH&[*[E0.<E5&!P,5\R_LI_\%,?AW^S?_P0&\7?
ML>^+/"_CNR_:3ET/Q-X2M_ K>$KYK_4[O5)[UK:Z4B$IMC%U'G<PDS;G:I&T
MU_0U10!_/3_P5%_82^)OP%_X-//V?/!&N>']2G\2_#_QA#XE\2VD<3/-H=K=
M_P!MR@3*,E3"=1MXG[*V>@%>L_\ !:S]HK0_VXM-_8Y_:T^$-AXF^)?P2^!W
MQ*EN_%YL=!O([@1)<Z3=-)]FGB1FB5;.XB,I'EAW"[B"37[>T4 ?B#^U%^T;
MX:_X+K_\%<?V-+_]FVW\0^*O"GP)\1R>*/&/C%] O-/TVQA%UI]T+1Y)XHV\
MS;82( >&:Y&W(W&OUC_;\0R?L(_&M5!)/@+70 !R3_9\]>MT4 ?A[_P;>_\
M!:;]F?\ 9B_X)T?#+X,^./B5_8GQ)EUR_M5T?_A'M5N<R7FI2M;KY\-L\'SB
M5.?,PN[YL8-?,/[1_P"UEXS_ &B/^&I/"W[1/QI_:E\)_&VUNM7T;P)\'? <
M-W8Z#KEE)')%#]IBCMFBN;#=\LK2.C26X9E>0R&OZ8** /YEOVL] UCQS_P:
M!?L?Z9:VU]J6K:C\6)K.TMP&>69GN?%$<$:@\\YC51TP5 [5]#?\%,/VQ/#7
M_!:3]J_]D/X3_ WPGXS7QOX%\8P:]XQM=5\-7.EW'PZMU>V\VWN_,C4)Y:QL
M[F,F,^3$JLS,JC]XZ* /Y[O^"L'QC^&_[*/[8_Q;\=?LR_%SXX?"']K#4]?B
MM-5^&T?A>[O-*^(4Z3[&NXD,+V[HZ/).C2.X;+;(D:0U^['[,/BCQ=XW_9L^
M'VL_$#2(] \=ZOX;TZ]\1Z9&I5=.U&2VC>Y@ R<;)BZXR<;<9/6NYHH _ 3]
MB:VDS_P7+'EOESXD"_*?F/\ Q5QX_,?F*9]C_P".%;_5?/\ ZS[O/_(__>_[
MY[^E?O\ 44 ?@1^U=I>M?LZ>&/\ @E;^TIK7AC7M;^$7PJ^'GA^W\5WNF637
MC>'RVFV3+<2Q#)5=NY@V,9@VY#% WZ"?$3_@X!^%]U^P_P#&7XY?"GPSXU^)
M_ACX0V^F2?:9-*NM!T_Q%+>W?V8QVMQ<P^8?L_#SMY!$:,A&[/'WG10!YA^Q
M=^TA_P -@?LG_#_XH?\ "/W_ (5_X3K1+?6/[(O'\R:Q\U=VPOM7>.ZOM7<I
M4X&<5Z?110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 5P7A[_DY[Q?\ ]BOH?_I7K%=[7!>'O^3GO%__ &*^A_\
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
M1H?BWI_Q3A>V\4FTW:K L5X(TB28_.D0P/W:D(6^8C=S7IO_  7;\6P?$?\
M;?\ VJ=$\6CP?\,O$&EZ;:3>%M.3X*1>)]?^)MO%IR!KL:Y-&SZ='%'"H,\+
MQJD:XPS1.2 ?T-?$?]J#X:?!S59K'Q=\1/ WA6]M]*;79;?6->M;&6+3UD$3
M7C++(I%N)&5#*1L#,!G)Q5W1OC[X%\1?"7_A/M/\:^$K[P*;=KO_ (2.WU>W
METGR5)#2_:E<Q; 006W8&#S7XT?!']G_ ,&?M;?\%#_^"?6D_$WPQI/C[2$_
M90TO5Y;'7;<7UK<7*6R[99HY,I+S(QQ(&!)!(R :^7/^$%OM%_X)]_$_08?#
M6N:Q\!OA5^V?-=>-?#VC0O)]G\,P(B31%%RWV==L8V]%=T8CC< #^BGPU^U7
M\+_&GPEO/'VC_$CP%JW@73]WVKQ'9^(+2?2;;:0&WW2R&)<$@'+#&16C\'/C
MYX%_:*\*MKOP^\:>$_'6B+,UNVH>'M7M]3M1(OWD,L#LFX9Y&<BOPE_X*H7_
M ,%/VE/V(/"_BC]DWPMJ7@WX$:?\6=,N_B)K>A_#F5M$8)9%$U$:-.D:7D%L
M,K*C1)$\A16W%@U?1_\ P;5?!SP)X?\ CS\;_&WPV^,%_P#%WP_XETW2;>\U
M'3/@TOPX\+M<Q/<!5M(49(I)XU#"18[>,+YH8LY<X /UXHHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "N"\/?\G/>+_^Q7T/
M_P!*]8KO:X+P]_R<]XO_ .Q7T/\ ]*]8H [VBBB@ K@OV<?^2?:A_P!C1XB_
M]/5]7>UP7[./_)/M0_[&CQ%_Z>KZ@#O:*** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K@O#W_ "<]XO\ ^Q7T/_TK
MUBN]K@O#W_)SWB__ +%?0_\ TKUB@#O:*** "N"_9Q_Y)]J'_8T>(O\ T]7U
M=[7!?LX_\D^U#_L:/$7_ *>KZ@#O:*** "BBB@#DOC9%XUN? 4L7@#4_"6B>
M('FCQJ?B2PGU&PL( P:61K6&>W>=B@*JOVB$ OO+$)Y;_+GPR_;;^+/[0O@G
MX'Z'X;D^'OACQO\ %'3?$?B&?Q!J?A^^U/1+S2-'O+>TCO;*Q2]MYMFHB_L+
MN#S+LB.WE;)F.UJ]_P#VP?V6[;]L;X*77@6_\7^,?!NF:A<Q2WT_AR2S$VHP
M(27LKA+NVN()K2;[LT#Q%)DS&X:-W1N0\3_L%S>*-+\#W3?&+XJ67COX?&^@
MTOQK9V_A^'5FL;U8Q<:=+;C2_P"S7MF,%JV/L8D#6D)#@AMP!X-H'_!1GXS_
M !Y^&KWG@;3_ (9^&/$W@GX8?\)[XKL-=L+W5K;5[QKS4[*/3[&6&YMC:Q--
MHM\3<RK<,JS0?N&*MN]S^-?[6/B&3X,_!:[\!PZ'I'BCX\:OI^E:/<>(+2;4
M;#0Q-I=UJTTD\$$L#W!6UL9T5%FB!D>,EPH(.%XD_P""3O@FZ\,:1HWAGQE\
M2_ &GVW@P?#[6ET+4K1Y?%VBAY'6"^FO+:XE$JO<7K"YMF@N U]<$2Y*E.\^
M*/[%FF_%'X=Z5H3^,O&FB77A/Q!!XB\(:SI7]G17_@R6&%K>."S#VCP20?9I
M+F K=PW#-'=2AF)V% #Y=T/_ (*(?'SXD>(?B[X-T"/X1V'C3]G;2+_5?%%Q
M?Z'J%Q8>,R+J^CTZ.QC2^1],$T.GRM*\LEZ87F0*DH0LWW/\(OB%%\6_A/X8
M\5P6TEG#XFTFTU:.WD8,T"SPI*$)'!(#XS[5\W7_ /P2$\(M!J+Z;\2/BWH.
MJ>+M,O\ 2/'6JV%_IPO/B#;7EU/=2I?F2R=(&62ZO!$^GK9O EW(D;(JQA/J
MC0-"M/"VA66F:? EK8:= EK;0)]V&)%"HH]@H _"@#DO%'[0WAOP;KXTR_C\
M4)=R3FVA$/A;5)X[J4(TA2&2.W9)3L1V^0M\J,>BG$7_  T=X?\ ^@?X\_\
M"'UK_P"1*/B__P E!^%?_8T3_P#IEU2N]H X+_AH[P__ - _QY_X0^M?_(E'
M_#1WA_\ Z!_CS_PA]:_^1*[VB@#@O^&CO#__ $#_ !Y_X0^M?_(E'_#1WA__
M *!_CS_PA]:_^1*[VB@#@O\ AH[P_P#] _QY_P"$/K7_ ,B4?\-'>'_^@?X\
M_P#"'UK_ .1*[VB@#@O^&CO#_P#T#_'G_A#ZU_\ (E'_  T=X?\ ^@?X\_\
M"'UK_P"1*[VB@#@O^&CO#_\ T#_'G_A#ZU_\B4?\-'>'_P#H'^//_"'UK_Y$
MKO:* ."_X:.\/_\ 0/\ 'G_A#ZU_\B4?\-'>'_\ H'^//_"'UK_Y$KO:* ."
M_P"&CO#_ /T#_'G_ (0^M?\ R)1_PT=X?_Z!_CS_ ,(?6O\ Y$KO:* ."_X:
M.\/_ /0/\>?^$/K7_P B4?\ #1WA_P#Z!_CS_P (?6O_ )$KO:* ."_X:.\/
M_P#0/\>?^$/K7_R)1_PT=X?_ .@?X\_\(?6O_D2N]HH X+_AH[P__P! _P >
M?^$/K7_R)1_PT=X?_P"@?X\_\(?6O_D2N]HH X+_ (:.\/\ _0/\>?\ A#ZU
M_P#(E'_#1WA__H'^//\ PA]:_P#D2N]HH X+_AH[P_\ ] _QY_X0^M?_ ")1
M_P -'>'_ /H'^//_  A]:_\ D2N]HH X+_AH[P__ - _QY_X0^M?_(E'_#1W
MA_\ Z!_CS_PA]:_^1*[VB@#@O^&CO#__ $#_ !Y_X0^M?_(E'_#1WA__ *!_
MCS_PA]:_^1*[VB@#@O\ AH[P_P#] _QY_P"$/K7_ ,B4?\-'>'_^@?X\_P#"
M'UK_ .1*[VB@#@O^&CO#_P#T#_'G_A#ZU_\ (E'_  T=X?\ ^@?X\_\ "'UK
M_P"1*[VB@#@O^&CO#_\ T#_'G_A#ZU_\B4?\-'>'_P#H'^//_"'UK_Y$KO:*
M ."_X:.\/_\ 0/\ 'G_A#ZU_\B4?\-'>'_\ H'^//_"'UK_Y$KO:* ."_P"&
MCO#_ /T#_'G_ (0^M?\ R)1_PT=X?_Z!_CS_ ,(?6O\ Y$KO:* ."_X:.\/_
M /0/\>?^$/K7_P B4?\ #1WA_P#Z!_CS_P (?6O_ )$KO:* ."_X:.\/_P#0
M/\>?^$/K7_R)1_PT=X?_ .@?X\_\(?6O_D2N]HH X+_AH[P__P! _P >?^$/
MK7_R)1_PT=X?_P"@?X\_\(?6O_D2N]HH X+_ (:.\/\ _0/\>?\ A#ZU_P#(
ME'_#1WA__H'^//\ PA]:_P#D2N]HH X+_AH[P_\ ] _QY_X0^M?_ ")1_P -
M'>'_ /H'^//_  A]:_\ D2N]HH X+_AH[P__ - _QY_X0^M?_(E'_#1WA_\
MZ!_CS_PA]:_^1*[VB@#@O^&CO#__ $#_ !Y_X0^M?_(E'_#1WA__ *!_CS_P
MA]:_^1*[VB@#@O\ AH[P_P#] _QY_P"$/K7_ ,B4?\-'>'_^@?X\_P#"'UK_
M .1*[VB@#@O^&CO#_P#T#_'G_A#ZU_\ (E'_  T=X?\ ^@?X\_\ "'UK_P"1
M*[VB@#,\)>+;7QIHXOK.+4X86<H%O].N+";(Z_NIT1\>AVX/:M.BB@ K@O#W
M_)SWB_\ [%?0_P#TKUBN]K@O#W_)SWB__L5]#_\ 2O6* .]HHHH *X+]G'_D
MGVH?]C1XB_\ 3U?5WM<%^SC_ ,D^U#_L:/$7_IZOJ .]HHHH **** "BBB@
MHHHH **** ."^+__ "4'X5_]C1/_ .F75*[VN"^+_P#R4'X5_P#8T3_^F75*
M[V@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "N"\/?\G/>+_\ L5]#_P#2
MO6*[VN"\/?\ )SWB_P#[%?0__2O6* .]HHHH *X+]G'_ ))]J'_8T>(O_3U?
M5WM<%^SC_P D^U#_ +&CQ%_Z>KZ@#O:*** "BBB@#S7]L"Z\6:;^S5XRO?!7
MB2W\):]INE7%['JDFEIJ,END43._DQR,(A,0OR/*LL:-@O#*H*'Y>_:L_:L^
M(_A_]FS]G?4-$U3XGWNK^-]%_MGQ%:_"_0M'U/QGJ:1:.MS)/;VNI026*V:S
M.HF;8LGFSV44)W3"-_K[XW_!/0?VA_AO?^$_$QU[^Q-4 6Z32-?O]$N)D[H;
MBRFAG",,AD#[7!(8$$BO-+K_ ()L?">Z\ ^#_#OV3QU!;_#\7$?A[4;;XA>(
M;?6]*@N%19K:/4X[Y;[[,XBA!MS.8?W$/R?NTV@'S)I_[3/QC^/?PQ1=.^,5
MMX3\0> /@)I7Q'U+5?#6AV,^F^*-;OCJD12ZCU&U>6*SADT>3?#"MK.3<R*7
MB:-57W/XZ?M">+_%OP5_9WM="UBY\ :[\?->TW2KW5]-L[>[N] C?1+_ %F?
M[-'>1RP>8PT\VX::*4*)RVPLHQTOC;_@F1\$O'WA[PYI-YX0N[/3?#&A2>%[
M>VTGQ!J>DQW^DR%6DT^_%K<1_P!HVSLI+0WGG(QEF)!,TN_K?B/^Q_X#^+7P
M_NO#.O6.N7>ESZS%X@MVC\2:E;WFCWL10Q2Z?=17"W&GA-FU4M)(D57D4*%D
MD# 'PQX4_:;^.GQ7\:_M > 8OC-JGA[4/V:=!U#5;/Q#;>']&D?QK))>ZHMC
M_:J2VC1+';QZ8(YEL4M#*TLK!XL*J_H9\#?'EU\4O@IX/\3WMJEC>^(]$LM4
MN+9,[;>2>!)609YPI8CGGBO(=>_X)5? OQ'H>G:?<>$M6C@L;2^T^Y:U\5ZQ
M:S^(+:^N#<WD&K2Q72R:M'/.TDDB:@TZNTTQ(/FR;OH.UM8K&UC@@C2&&%0D
M<:*%5% P  .  .U 'COQQ^(.K6/Q1^'T,7@;Q3>1V/B:9H)X;C31'J)_LC4E
MVQ![M6!PS-^]6,8C;G=M5NI_X6_X@_Z)7X\_\"]%_P#EA1\7_P#DH/PK_P"Q
MHG_],NJ5WM '!?\ "W_$'_1*_'G_ (%Z+_\ +"C_ (6_X@_Z)7X\_P# O1?_
M )85WM% '!?\+?\ $'_1*_'G_@7HO_RPH_X6_P"(/^B5^//_  +T7_Y85WM%
M '!?\+?\0?\ 1*_'G_@7HO\ \L*/^%O^(/\ HE?CS_P+T7_Y85WM% '!?\+?
M\0?]$K\>?^!>B_\ RPH_X6_X@_Z)7X\_\"]%_P#EA7>T4 <%_P +?\0?]$K\
M>?\ @7HO_P L*/\ A;_B#_HE?CS_ ,"]%_\ EA7>T4 <%_PM_P 0?]$K\>?^
M!>B__+"C_A;_ (@_Z)7X\_\  O1?_EA7>T4 <%_PM_Q!_P!$K\>?^!>B_P#R
MPH_X6_X@_P"B5^//_ O1?_EA7>T4 <%_PM_Q!_T2OQY_X%Z+_P#+"C_A;_B#
M_HE?CS_P+T7_ .6%=[10!P7_  M_Q!_T2OQY_P"!>B__ "PH_P"%O^(/^B5^
M//\ P+T7_P"6%=[10!P7_"W_ !!_T2OQY_X%Z+_\L*/^%O\ B#_HE?CS_P "
M]%_^6%=[10!P7_"W_$'_ $2OQY_X%Z+_ /+"C_A;_B#_ *)7X\_\"]%_^6%=
M[10!P7_"W_$'_1*_'G_@7HO_ ,L*/^%O^(/^B5^//_ O1?\ Y85WM% '!?\
M"W_$'_1*_'G_ (%Z+_\ +"C_ (6_X@_Z)7X\_P# O1?_ )85WM% '!?\+?\
M$'_1*_'G_@7HO_RPH_X6_P"(/^B5^//_  +T7_Y85WM% '!?\+?\0?\ 1*_'
MG_@7HO\ \L*/^%O^(/\ HE?CS_P+T7_Y85WM% '!?\+?\0?]$K\>?^!>B_\
MRPH_X6_X@_Z)7X\_\"]%_P#EA7>T4 <%_P +?\0?]$K\>?\ @7HO_P L*/\
MA;_B#_HE?CS_ ,"]%_\ EA7>T4 <%_PM_P 0?]$K\>?^!>B__+"C_A;_ (@_
MZ)7X\_\  O1?_EA7>T4 <%_PM_Q!_P!$K\>?^!>B_P#RPH_X6_X@_P"B5^//
M_ O1?_EA7>U%?W\&EV,US<S16]M;HTLLLKA$B11EF9CP  "230!PTOQDUZ&-
MG?X6^.T1 69FO-$ 4#N?^)A6?X/_ &D+KXA^%--U[0/ 'BO7-#UFVCO=/U'3
M]4T*YM+Z"10\<L4J:B4D1E(*LI((((-?G3^W=_P4'^+_ /P5+M]=^$/[&GA+
MQ3XH^&"70T3XB?%719-/@_T:0[;JST-M0NK6"YF\LL&E$PQN&TJ&6:L;]BC]
ME[_@H+^Q?I.O^'OA7<6M]\*/"DT4GAGPC\;QI/\ :=_#.99+F*WOM#O;KRWB
MESM$[)%B5-J@!U !^H'_  M_Q!_T2OQY_P"!>B__ "PH_P"%O^(/^B5^//\
MP+T7_P"6%?&47_!=K4_V;9%L_P!JO]G3XM? CRB$F\36%I_PEGA,8X+F^LP6
M3/W@GEL0,Y.1S];_ +-'[;WP@_;)T+^T?A;\2/!_CF%4WRQZ5J<<US:C_IM!
MGS8CR.)%4\CCF@#6_P"%O^(/^B5^//\ P+T7_P"6%'_"W_$'_1*_'G_@7HO_
M ,L*[VB@#@O^%O\ B#_HE?CS_P "]%_^6%'_  M_Q!_T2OQY_P"!>B__ "PK
MO:* ."_X6_X@_P"B5^//_ O1?_EA1_PM_P 0?]$K\>?^!>B__+"N]HH X+_A
M;_B#_HE?CS_P+T7_ .6%'_"W_$'_ $2OQY_X%Z+_ /+"N]HH X+_ (6_X@_Z
M)7X\_P# O1?_ )84?\+?\0?]$K\>?^!>B_\ RPJWK?[07@WPY\<M"^&U[KUI
M;^./$NF76L:;I3*_F75K;-&DKA@-BD&0;59@SA)2H812%>RH X+_ (6_X@_Z
M)7X\_P# O1?_ )84?\+?\0?]$K\>?^!>B_\ RPKO:* ."_X6_P"(/^B5^//_
M  +T7_Y84?\ "W_$'_1*_'G_ (%Z+_\ +"N]HH S/"6O77B/1Q<WFBZGH$Q<
MJ;2_>W>8 =&S!+*F#V^?/J!6G110 5P7A[_DY[Q?_P!BOH?_ *5ZQ7>UP7A[
M_DY[Q?\ ]BOH?_I7K% '>T444 %<%^SC_P D^U#_ +&CQ%_Z>KZN]K@OV<?^
M2?:A_P!C1XB_]/5]0!WM%%% !1110 4444 %%%% !1110!P7Q?\ ^2@_"O\
M[&B?_P!,NJ5WM<%\7_\ DH/PK_[&B?\ ],NJ5WM !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
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
M+?\ $'_1*_'G_@7HO_RPH_X6_P"(/^B5^//_  +T7_Y85WM% '!?\+?\0?\
M1*_'G_@7HO\ \L*/^%O^(/\ HE?CS_P+T7_Y85WM% '!?\+?\0?]$K\>?^!>
MB_\ RPH_X6_X@_Z)7X\_\"]%_P#EA7>T4 <%_P +?\0?]$K\>?\ @7HO_P L
M*/\ A;_B#_HE?CS_ ,"]%_\ EA7>T4 <%_PM_P 0?]$K\>?^!>B__+"C_A;_
M (@_Z)7X\_\  O1?_EA7>T4 <%_PM_Q!_P!$K\>?^!>B_P#RPH_X6_X@_P"B
M5^//_ O1?_EA7>T4 <%_PM_Q!_T2OQY_X%Z+_P#+"C_A;_B#_HE?CS_P+T7_
M .6%=[10!P7_  M_Q!_T2OQY_P"!>B__ "PH_P"%O^(/^B5^//\ P+T7_P"6
M%=[10!P7_"W_ !!_T2OQY_X%Z+_\L*/^%O\ B#_HE?CS_P "]%_^6%=[10!P
M7_"W_$'_ $2OQY_X%Z+_ /+"C_A;_B#_ *)7X\_\"]%_^6%=[10!P7_"W_$'
M_1*_'G_@7HO_ ,L*/^%O^(/^B5^//_ O1?\ Y85WM% '!?\ "W_$'_1*_'G_
M (%Z+_\ +"C_ (6_X@_Z)7X\_P# O1?_ )85WM?ESX^_X+D>//VS_P!HCQC^
MSO\ LE>"K2_^(FEZQ<Z?+X\U>Z6?P]X<TJ QP3ZM+'MRTOVHS)#!B19$6&;+
MB7R@ >U_MQ?\%DHOV8?%MA\,/"GPJ\9^.?V@/%UN6\,>"+:YTV9Y">%N;Y[>
M[E:TM5P6,DB@$(V" &=>!_88_8&\;>&_B_'\??VE?!_C'XM_M%W2M]CN%N=&
M_P"$?\!0-DBST>W>_ 3:"09V4.V3C!9VD^@/^"=7_!,'P?\ \$_=&UK5EU+4
M_'_Q8\;R?:_&/Q UX^;J_B&<D,5W$GR;<$#9"IP J[BS#=7TS0!P7_"W_$'_
M $2OQY_X%Z+_ /+"C_A;_B#_ *)7X\_\"]%_^6%=[10!P7_"W_$'_1*_'G_@
M7HO_ ,L*/^%O^(/^B5^//_ O1?\ Y85WM% '!?\ "W_$'_1*_'G_ (%Z+_\
M+"C_ (6_X@_Z)7X\_P# O1?_ )85WM% '!?\+?\ $'_1*_'G_@7HO_RPH_X6
M_P"(/^B5^//_  +T7_Y85WM% '!?\+?\0?\ 1*_'G_@7HO\ \L*/^%O^(/\
MHE?CS_P+T7_Y85WM% '!?\+?\0?]$K\>?^!>B_\ RPH_X6_X@_Z)7X\_\"]%
M_P#EA7>T4 <%_P +?\0?]$K\>?\ @7HO_P L*/\ A;_B#_HE?CS_ ,"]%_\
MEA7>T4 <%_PM_P 0?]$K\>?^!>B__+"C_A;_ (@_Z)7X\_\  O1?_EA7>T4
M>>:A\3]9U?3Y[2[^$GC:YM;F-HIH9;C1'CE1AAE93?X(()!!ZYK\]OB#^PI\
M9?V!?BQJ/Q1_8K\!^(] TW5YA=>*O@[KU_I0\*:\!R\U@4OF:PNR!@>6NP_*
M.%7RV_4RB@#X_P#V)O\ @L;X4_;@OM;\/:%\//B%HOQ(\&L+?Q3X,UAM,L-8
MT.< ;P8;B\BDDA#' F5-IR,A2=H^@_\ A;_B#_HE?CS_ ,"]%_\ EA7RK_P6
M5_9-_9^\3^#;'XM?$'XCV/[//Q+\(L)/#7Q/T^[2RUBTE3[MOL!#7\1S@V^&
M8JS!2NXY_/SPQ_P<-_M-?$OX4>%_AG=:%X*\#ZG\2+Z[\.>'OVAO%-EJ>@>%
M-6BV;8[ZVMY;0*EWL;>I9_)$@7,84E0 ?M]\+/C'I/Q8_MF"R>&WU;PW>_V=
MK&E-J-E=WFD3F-)5CN%M9IEB=HY$<(S!MKJ<8(KK*_+S_@C)_P $F_C%^QM\
M:'UOQWX@CC3P_/J:7VNV>J)>2?%%+P(8!)& /*LK9@UT#<!KQ[Z\O6\P0N[7
M?ZAT %<%X>_Y.>\7_P#8KZ'_ .E>L5WM<%X>_P"3GO%__8KZ'_Z5ZQ0!WM%%
M% !7!?LX_P#)/M0_[&CQ%_Z>KZN]K@OV<?\ DGVH?]C1XB_]/5]0!WM%%% !
M1110 4444 %%%% !1110!P7Q?_Y*#\*_^QHG_P#3+JE=[7!?%_\ Y*#\*_\
ML:)__3+JE=[0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 ?)O_!:;]L2X_9!_8.\3'PZ
M;Z?XF?$@?\(-X!L=/D5;^[US45:WMWA!_BAW&;T_= =6%>:_\$K?^"%6B_\
M!.;0OAEJB?$;QK?>)/"-C>OJ>F06NBP:1?7FI6\*WZM)'IZW\L'FV]L\:RW;
M8-G;_P *;:YK]F.7_AZ__P %9_$GQMN ;SX*_LOS77@OX=JX)MM<\1N NJ:L
MH(*NL*XAC<<'$;J0RFOTAH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HKXJ_;1_X+]?LY_L*?'B;X;^+]=US5/%EK:>;<6GA[3O[3:WNFVF#3
MV5'#?:I5;<%"E4&WS7B,L(D\X'Q'_;D_X*8-L\):!9_L9_">\X_MKQ+;IJWC
M[4H#CF&Q_P!38D@L")L2(<,K&@#ZV_;'_P""A/P:_8#\&C6OBSX^T/PG',A>
MTLI93-J.HXSQ;VL8::7D8RJ$ ]2*^21^VE^V!_P4C;[/^SW\+X_V>_AM=G"_
M$CXI6>_6+N(Y_>Z?HHS@\*RO<;HW5OX37M7['/\ P1@^"?[(/C ^-6TS5/B;
M\5[EQ/>^/O'=X=<UZ>;C,B2RY6 Y!P8E5L'!9J^LJ /BC]F__@A;\*?AK\0H
MOB'\5M1\1?M'?%OAF\5?$.?^T4M&'(%G8MFWMT4X*#:[)@;7%?1O[7GPT\$?
M$_\ 9F\9:7\0/ P^(OA*#2;B\O/#L6EMJ-SJ*PQ-(([:! 9&N3MQ$(OWF\KL
M(;%>E44 ?DO_ ,$(/ASK/[#WQ.T_P3:Q_&S6_#GQCT]]7UFP\0_#;Q+I.G?#
M75K2SM_(LTU'4;&*.XMVMTFM1,\BL396**GS9K]:*** "N"\/?\ )SWB_P#[
M%?0__2O6*[VN"\/?\G/>+_\ L5]#_P#2O6* .]HHHH *X+]G'_DGVH?]C1XB
M_P#3U?5WM<%^SC_R3[4/^QH\1?\ IZOJ .]HHHH **** /+?VU?#E]XF_96\
M=QZ?XF\2^$[BUT6[O/MV@W2VEZRQ0NYB6<HSPA]NTR0F.90<QRQN P^5?VO?
MVF/%/AK_ ()Z_"O1;>Y^+=E-XX\!+JVO>-_"OAW6-;OM-2UTZWF,)NK"WGDM
M;F]FD1/M$A39"MY(LL<R1-7VM\6O@OX.^/O@J;PWX[\)^&O&OAVYD26;2M>T
MN#4K*5T;<C-#,K(2K $$C@C(J#X<_ /P+\'OANW@WPEX+\)^%O"#"96T/2-(
MM['36$N?-!MXD6/Y\G=\OS9.<YH _/+5/BW<?M*?#6\N=;^(OQ2\&67P^_9H
MTSQ]H]_;Z_JWA6Z.K3'58K[4[R+=!)>BW.F6;A;M9;<BY+&-UN S?07[27Q!
M\1^,O@;^S!H?B'6-=\-#XP>*M(T?QE=Z+J<VA7R*VA:AJ)@CN[=DFM?.OK.V
M@)AD1V64QJP\S!]W^(7[)GPK^+:^%AXK^&?P_P#$P\##'AL:MX=L[W_A'_\
M5?\ 'GYD;?9_]1#_ *O;_J8_[HQ<\5?LV_#KQUX&\0^&-;\ ^"]8\->+;[^T
M]=TF^T.VN+'6KO?')]HN870I-+OAB;?("VZ)#G*C !^8WA3QCK'Q$\:_M/>#
M/$/QA^*&F>%/V>/"NN:QX"UFU\=ZC8W4++J>LQ7$]Y<I.LFJ_P!F/IUO;@7[
M7"* PF5VD+-^H/P#\1:OXO\ @5X+U;Q"GEZ_JF@V-WJ:>7Y>VYDMXWE&T?=^
M<MQVKG=>_8E^#/BK1/"&F:G\(_ACJ6F_#[=_PBUI=>%K&:#PUN:-F^Q(T16V
MRT41/E!<F-#_  C'I] 'C/QQU?QM%\4?A\MGX?\ "T]K%XFF.GR3>(9XI+IO
M[(U($2H+)A$-AD.5:3E5&,,67J?^$A^)_P#T*'@/_P *^[_^5E'Q?_Y*#\*_
M^QHG_P#3+JE=[0!P7_"0_$__ *%#P'_X5]W_ /*RC_A(?B?_ -"AX#_\*^[_
M /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_X2'XG_\ 0H> _P#PK[O_ .5E
M=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\ A(?B?_T*'@/_ ,*^[_\ E97>
MT4 <%_PD/Q/_ .A0\!_^%?=__*RC_A(?B?\ ]"AX#_\ "ON__E97>T4 <%_P
MD/Q/_P"A0\!_^%?=_P#RLH_X2'XG_P#0H> __"ON_P#Y65WM% '!?\)#\3_^
MA0\!_P#A7W?_ ,K*/^$A^)__ $*'@/\ \*^[_P#E97>T4 <%_P )#\3_ /H4
M/ ?_ (5]W_\ *RC_ (2'XG_]"AX#_P#"ON__ )65WM% '!?\)#\3_P#H4/ ?
M_A7W?_RLH_X2'XG_ /0H> __  K[O_Y65WM% '!?\)#\3_\ H4/ ?_A7W?\
M\K*/^$A^)_\ T*'@/_PK[O\ ^5E=[10!P7_"0_$__H4/ ?\ X5]W_P#*RC_A
M(?B?_P!"AX#_ /"ON_\ Y65WM% '!?\ "0_$_P#Z%#P'_P"%?=__ "LH_P"$
MA^)__0H> _\ PK[O_P"5E=[10!P7_"0_$_\ Z%#P'_X5]W_\K*/^$A^)_P#T
M*'@/_P *^[_^5E=[10!P7_"0_$__ *%#P'_X5]W_ /*RC_A(?B?_ -"AX#_\
M*^[_ /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_X2'XG_\ 0H> _P#PK[O_
M .5E=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\ A(?B?_T*'@/_ ,*^[_\
ME97>T4 <%_PD/Q/_ .A0\!_^%?=__*ROD'_@L1^V7\7?A/\ !;0?A+X*T/PG
M9?&']H?4&\%^#SI_B6XNKG3_ #%'VS4BC6,0$5M"V6DW@HTD;8(4BOO34M2M
M]&TZ>[NYX;6TM8VFGGF<)'"B@EF9CP% !))X %?G3_P2VTFZ_P""C?[;GQ"_
M;2U^&?\ X0ZV$_@#X,6EPC*(M&MY66]U95)QONYPZJV P594.1MH ^COV*/V
M:O$_["G[+'@KX4>#_!7@)=$\&Z<EFLQ\5W227\YR\]U(!IN/,FE:21NV7..,
M5ZE_PD/Q/_Z%#P'_ .%?=_\ RLKO:* ."_X2'XG_ /0H> __  K[O_Y64?\
M"0_$_P#Z%#P'_P"%?=__ "LKO:* ."_X2'XG_P#0H> __"ON_P#Y64?\)#\3
M_P#H4/ ?_A7W?_RLK8^*GQE\(? OPI+KWC;Q5X<\'Z)!DRZAK>I0V%K'@9YD
ME95'YU\8>-_^#AWX*:OXDN/#GP5T+XF?M)^+(#Y;6/PZ\-7%]:P/V\V\D"0K
M'CDR(S@"@#ZE\8?%3QO\//#%[K>OZ+\,=#T;38C/>7^H>.;BVM;2,=7DD?30
MJ*/4D"L_X6_M >(OCEX.@\1>"8/A#XP\/W3%8-3T3X@RZA9S$=0LT.G,A([X
M-?F__P %#-9_;K_;'_9\_P"$MU;X:_!C]G/X>?#;48_&DEEXN\26^O:Q>BUC
ME$;S(P&F;8O-^TK#=% )[>#<XVG.1_P0R_X*AR7'[1WB.V_: MM+^'/C'XY6
M&E?\([J4%C#I^A^-]1L'O8+NXF,4KPVVN.LMK!<6I*%6LHT*JY"$ _5G_A(?
MB?\ ]"AX#_\ "ON__E91_P )#\3_ /H4/ ?_ (5]W_\ *RN]HH X+_A(?B?_
M -"AX#_\*^[_ /E91_PD/Q/_ .A0\!_^%?=__*RN]HH X+_A(?B?_P!"AX#_
M /"ON_\ Y64?\)#\3_\ H4/ ?_A7W?\ \K*[VB@#@O\ A(?B?_T*'@/_ ,*^
M[_\ E91_PD/Q/_Z%#P'_ .%?=_\ RLKO:\]_:B_:J^'_ .QA\&-5^('Q,\3:
M=X4\*Z.O[Z[NF.97()6&*-07EE;!VQH"S8.!Q0!)+XF^)L,;._A+P"J*"S,W
MC"[  '<_\2RO@WXH?\%8?C;^VG\4?$7P7_9#\)>"]7\1:+,++Q'\5GU>;4O"
M'@UCG<B.]I$MW=8^ZL8E0'DJX#;:C>$?CM_P7HFDD\2)XI_9W_9#GD1[?1A_
MHGC/XH6W4-<L"?L-A(I_U8RSJ?XPRNGZ%_ ?]G_P5^R_\+-+\$_#[PSI/A+P
MKHL?EVFFZ= (HH_5CW=V/+.Q+,22Q).: /S,^ __  ;GW_PD\?3:QKU_H7Q!
MA\82G5/B,FN:R'O?'6I>?+<%FO1I?GVUC+),S7%DC,MSY, =RHF6?])O^$A^
M)_\ T*'@/_PK[O\ ^5E=[10!P7_"0_$__H4/ ?\ X5]W_P#*RC_A(?B?_P!"
MAX#_ /"ON_\ Y65R/[4/_!1WX$?L6VLC_%'XK^"?!]Q$N[[!=ZDCZC(,9REI
M'NN'_P" QGJ/6OE__A^GXA_:.;[/^S!^S%\9?C0DW%OXDU>U7PCX7EST=+V\
M&7 ^\5\M3C'// !]G?\ "0_$_P#Z%#P'_P"%?=__ "LKBOVA/VJ]<_98^$VM
M>-O'>G_#'P_X?T*SFO;B>Z\;W$1E6*-I"D0;3AYDA"D*B_,Q( &37S,?V;?^
M"@/[71#_ ! ^./PW_9Q\-W/+Z+\-=$;6=9:+_GG)?WA AD[[[?(X'')%;_P[
M_P"#=?\ 9QT[7#KWQ)LO&OQ^\82(4EU[XE^);K6[AMWWL1;D@ )Z9C)&!@T
M6O\ @GI_P6=M_P!N?6_#7G>"-,T30/&FIWGA_2-8T7Q1_;T%OK-K8#4I=)O2
M;6W6*Z-COG4V[7,#"*1?.#J5K[BKYK_9@_X)=>!OV6?%GAK4M.\1>.O$=IX#
MM+BQ\'Z3K=];/I_A2*==DIMT@MX6EF:/,?VB[:><1LRB0!B#]*4 %<%X>_Y.
M>\7_ /8KZ'_Z5ZQ7>UP7A[_DY[Q?_P!BOH?_ *5ZQ0!WM%%% !7!?LX_\D^U
M#_L:/$7_ *>KZN]K@OV<?^2?:A_V-'B+_P!/5]0!WM%%% &5XI\<Z)X%MX)=
M;UC2]'BNI1!"]]=QVZS2'HBER,M[#FK]GJ$&HK(;>>&<12-$YC<-L=3AE..A
M!ZCM7X1_\'2_[/7CS5OVN]!^(-YX \>^/_!,?A#3--\)7F@6LU];>%=9AUV*
MZOS/!%]QI[!619'!WG:HSY>8_MG_ ((01^)/'OBK]IGXK-X"\6?"_P"&GQ>\
M?IK_ (.\.>(['[!?'_1$CO-0:#)V?:90CG!*ED;!8#<0#]":*** "BBB@ HH
MHH X+XO_ /)0?A7_ -C1/_Z9=4KO:X+XO_\ )0?A7_V-$_\ Z9=4KO: "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH ***Y'XY_'CP?^S3\+M6\:>._$6E>%_#.B0/<7=_J%PL,:A5+;
M5R?F<X(5%RS'  ).* /C#_@MU\8O$?Q;?P#^R!\-+^:R\?\ [1MP]MKNH6Y.
M_P ->$X>=3O&(! \V-6@0-@/NE4'=BOM?X+_  @\/_L_?"3PWX'\*:?%I7AO
MPGIL&E:;:QCB&"% B ^K8&2>I))/)K^=WX&_\''7A#X5?'/XR?M%7G@C4?&?
MQG^+%RVE>'K?5KR/2M%\#^%K1U6VL_M'SR7,[-MGGBMHFWLB88.S =7)\4/V
MZO\ @LA.YG\-_%'6O ^I'"Z/X?9OAMX%:(_-NDU"ZSJ.J0$%0T06,Y4E6H _
M4C_@H5_P7:^!7[#'ACQ)IEKXKTWQ_P#%;3]-NYM-\&>'F?4KJ2ZBA=UCNVMU
M=;2,%09&E(94RP5L8/Y/? S_ (..OVAO@O\ &K5V\1:!%&OB+39-3URW^*OB
MD:;8V=^K(R-IMLD"RZ:A@DC T[=</)$(+@$M))/<?7_[-O\ P;G?$B3X97_A
M7QU\5?"OP:\">(;-[#6?!7P0T%;%M5MI%VRV]YKE\);^[C9/D9)_,4C/J<^L
M_L._\&W7PO\ V2/CUI?CK7;[1OB'=^'!<R::U_X>/VZ^N9P4^V:E<W-S<_:9
MTC9E00):P@G?Y)=58 'R+\,O^"\O_!0O]LS6H[?X$?L\?#;Q;HUUCRO$,.A:
MVFDC/3%Y?SV<.>_(Z=J^C--_91_X*C?M-:&1XY_:-^$GP,L-0AVRV/@WPXNJ
M:A![&61 8V]X;D_7K7ZE1QB*,*H"JHP !@ 4Z@#\6KC_ (-#-3^)?CW_ (2C
MXI_M8^-_B5K[@B2\U;PO#?2,"<D WUS=#]*^CO!'_!NUIOAOPW;Z1=_M6?M>
M-H]J-L>D:-XXBT32D'H+:WM@J_@17Z+T4 ?F9\??^#7#X&_%OX6:C8P^)OBE
MJ/BOY+C3M3\5>,+_ %>V\^-@ZI<P"2/?"Y&R3RVCDVLQ22-L,/"=;_X-9_'U
ME^S1KF@^&OC)H5C?>,KC^T=>\!ZYI\^O>#XIT!2U6RO)S_:-M+!"(HOMJ8FE
M$>"J1GRE_:FB@#\8?V7_ /@I-^TQ_P $0?".G> OVX/ /B7Q5\*[.1;#0?BO
MX>F77!8ID+'!?.I#NG]QI1'<84@)-QM_3K]D_P#X*$?!/]N70OM_PG^)GA3Q
MJ GF26MG=[+^V7UEM) MQ%U_CC6O3/'_ ,/]#^*W@G5/#?B;2-.U_P /ZW;/
M9ZAIVH6ZW%M>0N,-')&P*LI'8BOPZ_;H_P"""WA;_@GM\5KCXF>'/AYXE^)'
M[/CRF]U2U\+ZA-9>/_A0P'S7^EW<;![VTC7),%QYGEJ,\?-+0!^[M%?EG^S+
MI7[5'AWX+Z-\0_V6?VDO!_[77PBU"/S+30OB?&;?7HU7A[==6A =KI> RW:I
ML(.5SU]+\*?\%_/"_P )]>L_#G[4/PK^)/[,'B6Y<0K=^(+!M4\,7<G]VWU6
MU5HY!D'+,BJ./F] #] :*\6\??\ !1CX%_#3X/:/\0-4^*G@T^"]?O%L-.UB
MQU!=0MKN4J7;:UOORL<8:65_N0Q(\DC(B,P^2_BS_P %+/B;_P %)/B'K'PE
M_8G6R_L73V-GXJ^..IV[2>'_  ^3]^'2D(Q?W8&<,,QKD'E6$J@'M7_!0?\
MX*R>%_V-?$%E\._">B:E\7?C_P")HQ_PCWP[\/GS+V4L/EN+R0 K9VH^\TDG
M.T$@%0S+YM^S+_P29\3_ !N^,UE\=OVQ]:TKXG?$VW9;CPWX+M%8^#OAR,AU
M2VMV)6YNE(&ZXD#<J,;RJR5[C_P3^_X)C?#G_@GIX=U*;P\NI>)O'WBDB?Q5
MXYU^<WNO>)K@G<SS3MDK'NY$2D*."=S98_1= !7+_&/XU^$?V>?AUJ7B[QSX
MDT;PGX9TB,RW>I:I=);6\(]-S$98] HRS'  ).*^1?VI/^"T>D:1\6;KX/?L
MY>$;S]HOXWIB.YT[0IP- \+[LKYVJ:ES#"JL.8PV[(*,8V(KGO@Q_P $:M=_
M:'^(ND_%3]M+QI!\;/'&GR+>:3X)M(V@\!^$),?=@LFXNW X,LX^;^)7(#4
M?GE\3?\ @K_\;?VH?CGKVJ_ F3QG<^*[SQ@6\#7.I^+KG3-)U;1_MSPV%M8>
M%E0-J,%Q;1))=7MS$?(>:0>;;JB,?T&_X=+?M!_M1_O?VC?VOO'MSID_^M\)
M_"RTB\(Z6J]X7N5#7%S&3U\P!L<9Z5^@MA8P:78PVUM#%;VUNBQ111($2)%&
M%55'     %2T ?+_ .RY_P $8?V8OV/+F.]\%_!_PH-<1O-.MZS"VLZJTA.6
MD%S=F21&8\G85'H .*^H*** "BBB@ HHHH *X+P]_P G/>+_ /L5]#_]*]8K
MO:X+P]_R<]XO_P"Q7T/_ -*]8H [VBBB@ K@OV<?^2?:A_V-'B+_ -/5]7>U
MP7[./_)/M0_[&CQ%_P"GJ^H [VBBN5^..H^,-(^#GB>Z^'VGZ/JWCBWTV>30
M;+5IFAL;J]"$PQS.OS+&7P"0<X[T ?!O_!5O3O!%S^TW:MXC_;_\3_LRW_\
M8=OM\(:;XDM=/BEC\V;%X8Y&#;I#N7=CD1#TJA_P;N_&O5/B7J_[26@7GQP\
M9_M!Z5X'\9VVFZ'XOU:^-U87UBUNSI]ERN1(&+K*0[(Y2-TPK<^0_M,?L_?M
M;_M#>,8/%7Q9_9#_ &$O%&N+;)IT6J>(M3EFG\E"[K$))'R0"[D#/&XU]I?\
M$C],^)GA/X8>)= \>_"W]G_X3:;IU[%-HNE?">5/[.E\U7,\DT4?RI(65,$
M;LG/2@#V7]M7PY?>)OV5O'<>G^)O$OA.XM=%N[S[=H-TMI>LL4+N8EG*,\(?
M;M,D)CF4',<L;@,/"OC3K6E>)O\ @G9\*;[Q5XF^*%UXGU;PUI[:#HG@_P 7
MWVB>(/&VN3:8OE0I/:317,S M+*^^7[/&BR7%R/+MS)']0_%KX+^#OC[X*F\
M-^._"?AKQKX=N9$EFTK7M+@U*RE=&W(S0S*R$JP!!(X(R*X35_\ @GG\ ?$'
MP^TCPE?_  -^#][X5\/SSW.EZ-<>#-.DT_399R#-)! 83'$TA +LJ@M@9SB@
M#Y-^/5KXOO;KQ3X1^*'Q7\6Z)X@^"_[.6G>+_P"W?"WBF]\.VUYXA<ZK#J6K
MR);O"+R*%],M)%BN5D@07+!X?WN#ZW^TE\0?$?C+X&_LP:'XAUC7?#0^,'BK
M2-'\97>BZG-H5\BMH6H:B8([NW9)K7SKZSMH"89$=EE,:L/,P?:_$?[%?P;\
M8:-X0T[5OA+\,]4T_P"'H*^%K6\\+V,\/AH$QDBQ1HBMMS#$?W07_5)_=&-C
MQ5^S;\.O'7@;Q#X8UOP#X+UCPUXMOO[3UW2;[0[:XL=:N]\<GVBYA="DTN^&
M)M\@+;HD.<J, 'YC>%/&.L?$3QK^T]X,\0_&'XH:9X4_9X\*ZYK'@+6;7QWJ
M-C=0LNIZS%<3WERDZR:K_9CZ=;VX%^UPB@,)E=I"S?J#\ _$6K^+_@5X+U;Q
M"GEZ_JF@V-WJ:>7Y>VYDMXWE&T?=^<MQVKG=>_8E^#/BK1/"&F:G\(_ACJ6F
M_#[=_P (M:77A:QF@\-;FC9OL2-$5MLM%$3Y07)C0_PC'I] 'C/QQU?QM%\4
M?A\MGX?\+3VL7B:8Z?)-XAGBDNF_LC4@1*@LF$0V&0Y5I.548PQ9>I_X2'XG
M_P#0H> __"ON_P#Y64?%_P#Y*#\*_P#L:)__ $RZI7>T <%_PD/Q/_Z%#P'_
M .%?=_\ RLH_X2'XG_\ 0H> _P#PK[O_ .5E=[10!P7_  D/Q/\ ^A0\!_\
MA7W?_P K*/\ A(?B?_T*'@/_ ,*^[_\ E97>T4 <%_PD/Q/_ .A0\!_^%?=_
M_*RC_A(?B?\ ]"AX#_\ "ON__E97>T4 <%_PD/Q/_P"A0\!_^%?=_P#RLH_X
M2'XG_P#0H> __"ON_P#Y65WM% '!?\)#\3_^A0\!_P#A7W?_ ,K*/^$A^)__
M $*'@/\ \*^[_P#E97>T4 <%_P )#\3_ /H4/ ?_ (5]W_\ *RC_ (2'XG_]
M"AX#_P#"ON__ )65WM% '!?\)#\3_P#H4/ ?_A7W?_RLH_X2'XG_ /0H> __
M  K[O_Y65WM% '!?\)#\3_\ H4/ ?_A7W?\ \K*/^$A^)_\ T*'@/_PK[O\
M^5E=[10!P7_"0_$__H4/ ?\ X5]W_P#*RC_A(?B?_P!"AX#_ /"ON_\ Y65W
MM% '!?\ "0_$_P#Z%#P'_P"%?=__ "LH_P"$A^)__0H> _\ PK[O_P"5E=[1
M0!P7_"0_$_\ Z%#P'_X5]W_\K*/^$A^)_P#T*'@/_P *^[_^5E=[7RC^WE_P
M5%TO]C/XBP>%(;#P7<:I!HB>(M5O?%_C:W\):1IUK++/#:Q+<20SO-=W,EK=
MB*%(L'[-(7DC4 D ]Q_X2'XG_P#0H> __"ON_P#Y64?\)#\3_P#H4/ ?_A7W
M?_RLKXK\)?\ !S_^RSXS\&:1/I>J>-]>\7:A:K+=>$M \*WNK:EI\O1H6DAC
M-LY# @-',RL,$'!%3ZG_ ,%J/B[X_P!.FNOA?^P]\?=4LXT+B^\?W%CX#L]@
M_P"6ADNGD C[[CCCTH ^S?\ A(?B?_T*'@/_ ,*^[_\ E91_PD/Q/_Z%#P'_
M .%?=_\ RLK\</C_ /\ !Q#^T7:>(_\ A'=&U']EWPWXAN&,<?AWPQ<ZK\2O
M$A?O'&=-4V'F#H5ED7GCUKE_#?PW_P""M?\ P4#O'V>./&GPK\+7@4P:EXAM
M-/\  LML#]Y39623ZAD#H78=<9&* /VSO?%_Q)TVTDGN/"OP^@@B4O)))XRN
ME1 .I).FX K\[/VF?^#K#X2?LN?M":S\/-4T2P\0W7AUS;ZCK'A[Q ]]I=O=
M!&8VP?[(LLC@KL9HHGC1R%9U.<<9\*/^#3:#XE7=MJW[3W[1_P 6OC3J0832
MZ?%J<T-F7[J\UT]Q/*.^Y?);Z=^MNO\ @U#^%&A_%#4HO"7BP^&?A%XAOK*]
MU?PHWAJVU#6W2!2)+*UU^9S>6UG<':9H@&+[<;P&((!S]Q_P5B_;Q_X*+Z*E
MM^S+^RX_PI\/WX^7QS\1;@*IB;[L]M#,D2,.G*)= \_+W'PE\8O^"+_[0G[6
MG_!4[P3\'_C?\;A\9_&DVFGQ?XQ:QUF[&F^$-%60*(4FEM2MO/=.-D2QVP5-
MRN8V5^/Z(OVM_P!ISPU^QE^S5XT^*7C"X^S^'O!.F2:C<X.'N&&%B@3_ *:2
MRLD:#NTBU\R_\$0_V6_$W@CX.^*/CO\ %.W ^-?[2NHKXP\0AU&_1K!EQINE
MJ< A(+8K\IY5I"ISL% $W[(G_!(SX;?L.&VN/A[^SG\&K/6K;!77-2\4WFJZ
MMOZEENKG39)(R3R1&57I@# KZ<_X2'XG_P#0H> __"ON_P#Y65WM% '!?\)#
M\3_^A0\!_P#A7W?_ ,K*/^$A^)__ $*'@/\ \*^[_P#E97>T4 <%_P )#\3_
M /H4/ ?_ (5]W_\ *RC_ (2'XG_]"AX#_P#"ON__ )65WM% '!?\)#\3_P#H
M4/ ?_A7W?_RLH_X2'XG_ /0H> __  K[O_Y65WM% '!?\)#\3_\ H4/ ?_A7
MW?\ \K*/^$A^)_\ T*'@/_PK[O\ ^5E=[10!P7_"0_$__H4/ ?\ X5]W_P#*
MRC_A(?B?_P!"AX#_ /"ON_\ Y65WM% 'YC?&;_@GK\=_V)_CAKWQZ_9/\/>"
M]"N-7<W_ (X^$\/B.>XT/QWMY:2TB>SA2RO\;L.C!6)Z<NLGN'[%G_!1BR_X
M*E_!S5UTCP/X#:]L&.G>+O OBGQ!<1:MH$X8JUM?64FF'C<IPV&1L$9W*RK]
MDU\:?\%"/^"4[_'KXF:;\;O@GXEC^$'[2?A:/;8>)K>'_0?$D QG3]7A4$7%
MNX4+O(9T 7APH2@#Y(_;O_X-EK#X\>,K/Q/\'/!WPU^#&J72RV/B'2--\7:I
M!H'B&REY*26UM91&/:ZQL8X6C254*'RV99H_O7]B[]G#Q9^PW^S!X1^%?A3P
MMX2NM$\(VKP17%[XRN6GN9))7GFD8+I85-TLLC"- J1@A$5455'@/P9_X.!_
M GP^BUGP5^U-I6I? 7XU>"L+KFAG2;[5;#48-K-_:>GRVL4Q>Q*HS%VXC .Y
MV WG*US_ (*@_&3_ (*::S<>%_V)_"Z6'@M97M=3^-_C/3Y(-$LV5L.NE6<B
M^9?3 9PSJ$5AAD"D/0![7^W/_P %2;#_ ()V^#K;4OB3:^ +;4]581Z-X=T[
MQ7=WNNZ_*S;%CM+1--WR$L0NXX0$@,PS7S5XH^$O[:/_  6!TRUN/'-C'^S'
M\![XJTW@.S\1RV7C3Q+"#RM]?):2&TB<<&!45B"5=3PU?2_[#'_!'WX<_L<^
M,+GX@:U?:S\7OC;J^Y]5^(GC"7[;JLK-U2V5B4M(ADA4B^8+\I=@!CZSH ^>
MOV6/V8Y?V)OA19^"?A;\'_A7X.\.V8'[BR\57?F73@8\V>5M-,D\I[O(S,?6
MO2/^$A^)_P#T*'@/_P *^[_^5E=[10!P7_"0_$__ *%#P'_X5]W_ /*RC_A(
M?B?_ -"AX#_\*^[_ /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_X2'XG_\
M0H> _P#PK[O_ .5E=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\ A(?B?_T*
M'@/_ ,*^[_\ E97>T4 9GA*[UB\T</KMAIFG7^\@PV%^]["%['S'AA.3W&SC
MU-:=%% !7!>'O^3GO%__ &*^A_\ I7K%=[7!>'O^3GO%_P#V*^A_^E>L4 =[
M1110 5P7[./_ "3[4/\ L:/$7_IZOJ[VN"_9Q_Y)]J'_ &-'B+_T]7U '>U'
M=7<5C:R3SR)##"I>21V"JB@9))/  '>I*KZM%;3Z5<I>^4;-XF6<2D!/+(.[
M=GC&,YH _"W_ (+Z?L:^*?\ @I7^T9KWQ!\">'M5^-G@#PU\)+#4/!-]X6U
MW^D-J47B&)M4LXGMG*/=RZ:\CJ/F+JJ!<ND87Z:_X-J?@';?"2Q_:)USPM\'
MO''P<^%?C+QC:W/@O3/&EK-;Z\;6*TV31R++([M#',S>6Q9B=\@+N5)'R1^V
M-/\ \$]/V>/B=-=?LS_%+XR>$/C+=R$6VF?L\:A<ZK#J<RY 22)V-G)%US%#
M,F1D[2"0WZ"?\$%_B9^UE\2_@KXQE_:BTK6[5+348(O!E_X@T6UT77=3L=LF
M][RT@8^4XQ#PZALL_P TF-U 'WG1110 4444 %%%% '!?%__ )*#\*_^QHG_
M /3+JE=[7!?%_P#Y*#\*_P#L:)__ $RZI7>T %%%<=\4/VB/A_\ !& R^-/'
M/@[PA&J[B^MZU;:>H'KF5UXH [&BOC?XJ?\ !P5^QK\'W=-2^/W@O495.T)H
M'VC73(W8*;*.4'/UQ7"?\1"_@SQY\GPM^ 7[5'Q<,G^INM ^'<\=@?1GGN'C
MV+[E>XH _0.BOPL^+O\ P7F_:O\ "WC7QI\1KOX4>+_"?@3P;XLMO#B>%%DT
M.]\B5FC L-3M"O\ :BW=RKAHKB">.)?,3;!< ;F_3;]DG_@L?^S?^VMJ":7X
M*^)^AQ^*"YAD\-:V6T?6HI0<-%]EN0CNRG@^6''O0!].T444 %%%% !1110
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
MOMGPS_P= _'/Q;\2CX-U;X3?!GX-^*P0&TSXG^)M2\/219./G>YM88ASZN*
M/L+_ (9E_P""B_C;_D)_M._!#P1NZ_\ "._#HZEY?T^V.,_C5#5_^"57[87C
M0'^WO^"A_C([_O#1?AEI>D8^AAGR*/"WQH_X*1_%30+;5?#?A7]BA-+OD\RV
MO'\1ZUJ-O*OJKVV58>X-:'_"-_\ !4#6_P#CY\2?L1Z(#_T#]/\ $=R5_P"_
MIH XF_\ ^#?GXH>+)MWB7]O#]IS7(S]^U76;BSM)/K'%<K_.N,^.7_!L3\)-
M1^%&N7?Q ^+>K-;VMI)*WB;Q+JFJ2?V(VTK]JW3ZJ+<%=QYD0KR01@U[3_PS
M[_P4?UO_ (^?VA/V>M$SU_L[P)<7.WZ><]>1?MI_\$S/V^_C5\)[![C]I[P+
MX\N_#.MV>OVGAF+X::9:0WDT#G:^ZX<PS/$',L<-QB)I8XRSH55U .6^ OP'
M_9$_X(T_LT6WCY?B9^SCXWNM?NY)=.\1V_@L>(M7UVX!PMII20ZG*ZQI\D86
M(\':TTC.6D/?:5H/[;__  6$\'S1ZOK0_9"^"FI F"2TTAXO'OBBU=< 21-<
MR#3HSZ"19>?^6B&M_P#X(Z?\$;G_ &=/C?\ $#XV_%[0;W7_ (F>*9[7^R]4
M\:3V&J>(;66/SGNK]C:O-:V<EPTT<:PV\\WE16B#SCYCBOTIH ^7OV,/^";]
MI_P3^^'9\.?"P?#/P[#<8?4+\^#[R?4M8E'66ZNGU,RS.3D_,VU<G:%'%>R?
M\(]\3_\ H;_ ?_A(7?\ \LZ[VB@#@O\ A'OB?_T-_@/_ ,)"[_\ EG1_PCWQ
M/_Z&_P !_P#A(7?_ ,LZ[VB@#@O^$>^)_P#T-_@/_P )"[_^6='_  CWQ/\
M^AO\!_\ A(7?_P LZ[VB@#@O^$>^)_\ T-_@/_PD+O\ ^6='_"/?$_\ Z&_P
M'_X2%W_\LZ[VO!OV_P#_ (*+_#C_ ()R_"6/Q'XXO;B[U75I19>'?#.EI]IU
MKQ1>L0J6UI;@[G8LR@MPJ[AD@E00#3^-/Q,\0_LY_##5_&?CKXH_"[PMX6T&
M!KF_U+4?"UU%# @]SJ>68G 5%!9F(5020*_%3XA?'/XL_P#!2?\ X* ^#OVE
M=3\!>.]1^%_P2N;*7X9:*?@OXIU&V\:QRWD?VG5XEM8YH(V2(FXCWWB^8]C9
MH54%W7[U^"G_  3P^)?_  4G^+NA_&S]LJTM++0='=;[P/\ !"VF,^D>'2?N
M76K$_+>7NW&48;$R00 3$GZ,V]O'9VZ11(D442A$1%VJBC@  = * .%_X1[X
MG_\ 0W^ _P#PD+O_ .6='_"/?$__ *&_P'_X2%W_ /+.N]HH X+_ (1[XG_]
M#?X#_P#"0N__ )9T?\(]\3_^AO\  ?\ X2%W_P#+.N]HH X+_A'OB?\ ]#?X
M#_\ "0N__EG1_P (]\3_ /H;_ ?_ (2%W_\ +.N]HH X+_A'OB?_ -#?X#_\
M)"[_ /EG1_PCWQ/_ .AO\!_^$A=__+.N]HH X+_A'OB?_P!#?X#_ /"0N_\
MY9T?\(]\3_\ H;_ ?_A(7?\ \LZ[VB@#@O\ A'OB?_T-_@/_ ,)"[_\ EG1_
MPCWQ/_Z&_P !_P#A(7?_ ,LZ[VB@#@O^$>^)_P#T-_@/_P )"[_^6='_  CW
MQ/\ ^AO\!_\ A(7?_P LZ[VB@#@O^$>^)_\ T-_@/_PD+O\ ^6='_"/?$_\
MZ&_P'_X2%W_\LZ[VB@#@O^$>^)__ $-_@/\ \)"[_P#EG1_PCWQ/_P"AO\!_
M^$A=_P#RSKO:* ."_P"$>^)__0W^ _\ PD+O_P"6='_"/?$__H;_  '_ .$A
M=_\ RSKO:* ."_X1[XG_ /0W^ __  D+O_Y9T?\ "/?$_P#Z&_P'_P"$A=__
M "SKO:* ."_X1[XG_P#0W^ __"0N_P#Y9T?\(]\3_P#H;_ ?_A(7?_RSKO:*
M ."_X1[XG_\ 0W^ _P#PD+O_ .6='_"/?$__ *&_P'_X2%W_ /+.N]HH X+_
M (1[XG_]#?X#_P#"0N__ )9T?\(]\3_^AO\  ?\ X2%W_P#+.N]HH S/"5KK
M%GHX37;_ $S4;_>29K"P>RA*]AY;S3'([G?SZ"M.BB@ K@O#W_)SWB__ +%?
M0_\ TKUBN]K@O#W_ "<]XO\ ^Q7T/_TKUB@#O:*** "N"_9Q_P"2?:A_V-'B
M+_T]7U=[7!?LX_\ )/M0_P"QH\1?^GJ^H [VBBN4^.?PRE^-/P;\4>$H/$?B
M/P?-XDTR?3H]<T"[^R:II+2H4%Q;2X/ERIG<K=B!0!^*W_!S_P#LE_$OQ/\
MM:Z1\2K3X8>.OBIX1E\(:7HOAV?PW9S:FW@_5;;78[R\>6UCR4%Q9!HUF(PS
M$(>@(^TO^"&'A[QMXH\6?M*?%W7?AUXH^$7@WXT^.XM?\+>$_$-I]BU")$LT
MBN;^6W_Y9M=.$8YZF,D%EVNWPK\??V:I?V8_^"I>D_!+XB_\%!?VK/AMX"O?
M !\4Q>*/$_Q1GLDU:_:]:W6S@N'*6\01$=V,A)8\#;C)^N/^#<[XBMXKUC]I
M?0K?XU_$_P#:!T#PAXUMM/T'QGXH\17&KV5]8M:F1([3SL[)8V9UF9&*2XA=
M0JD9 /TTHHHH **** "BBB@#@OB__P E!^%?_8T3_P#IEU2N]K@OB_\ \E!^
M%?\ V-$__IEU2N]H **** "BBB@ HHHH **** "BBB@ KDOC'\!? _[0_A1]
M"\>^#_#'C31GSFQUS3(;^ 9&"0DJL ?<<\5UM% 'P)XH_P"#>'X2>#?$%UX@
M^ WC+XK_ +-'B6X?SFE\!^)9X],NI.G[^QG,D4B8 _=J8UX'XY[:1_P47_8\
M4_8]1^#G[7/AJVZ17L7_  A/BN=5Z*KJ38<C@L^22 ?6OT+HH _/_1/^#A#P
M#\+]6M]'_:+^&'Q@_9HUB5Q$+GQ7X=FN]"N'/ $&H6JNDBYXWE%4=S7V)\#?
MVH_AM^TUX4.N?#OQ[X0\;Z2J[Y+K1-6@O4@]I/+8[".X;!&#D5V6MZ'9>)=)
MN+#4;.UO[&[0QSVUS$LL4RGJK*P((]B*_-C_ (*G?\$+_A)XX\'Z=XA^$/P%
MU*P^(.I>(+.TU34?AEJMGX9U&PTAW+ZA,D,]Y9V$TDD2&%0^2)+A'*NJ.I /
MT?\ !_C'2/B'X4TW7M U33M<T/6;:.]T_4=/N4N;2^@D4/'+%*A*2(RD%64D
M$$$&M*OR"_8I_9>_X*"?L7Z5X@\/?"NXMKWX4>%)HI/#'A'XWC2?[3OX9S+)
M<Q6]]H=[=;'BES@3LD6)4VJ '5?<XO\ @NUJ?[-LBV?[5?[.GQ:^!'E$)-XF
ML+3_ (2SPF,<%S?68+)G[P3RV(&<G(Y /T*HKRS]FC]M[X0?MDZ%_:/PM^)'
M@_QS"J;Y8]*U..:YM1_TV@SYL1Y'$BJ>1QS7J= !1110 44C,$4DD  9)/:O
MSJ^/_P#P4?\ B/\ \% ?BSXA^!7[&#V3MHTGV'QM\9[M/.\/^#\\/!I^.+V_
MQTVY1<@Y(S)& >H?\% /^"KD7[/7Q,TWX+?!WPP?C'^TAXICW:;X3LI@+308
M2!_I^K3@@6ULN5;:2KL"O**P>JG[ /\ P2AE^#GQ/N_CC\>?$D7QB_:1U]?W
M_B"XB/\ 9OA.$YQ8:/;L,6\2 E?,"J[Y8X0.RGU#_@GY_P $VOAU_P $Z?AO
M<:7X2M[S5_%&NO\ :O$_C#693=:[XJNR2SSW5PV6/S%BJ [5R>"Q9F^@: "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ K@O#W_)SWB__ +%?0_\ TKUBN]K@O#W_ "<]
MXO\ ^Q7T/_TKUB@#O:*** "N"_9Q_P"2?:A_V-'B+_T]7U=[7!?LX_\ )/M0
M_P"QH\1?^GJ^H [VBBJ^K:DFC:5<WDHD:*UB>9PB[F(4$G [GCI0!^7G_!8;
MQ=\3/VMOV\- _9F^&GP/_9U\?:CH_@<^/9];^+VG->16\<EZ;4QZ<JD,I!C3
MS& <-OP0FP%_H_\ X)!_ SXZ_LZ_"3Q!X7^,GA/X ^"].M+J%_#6F?"K3I+&
MQ1"K_:'N(V509&8188#)^;<3Q7Y@_MV?\%#/V)?^"@WQ^TGXD^,(/VW-$\1:
M%I0T?3QX:LO[-M[.$N[.8UWL4:0O\Y4C<%7(XK[J_P"#?7Q3\$_%'@/XEO\
M!?4_VAM1LHK^Q75/^%JW#331R>7-Y?V3).%(W;\=PGM0!^B%?G5_P7531?$G
MC7X4:'J^J? O1-^E^)+N"Z^.5OYOP_EE^SVT<49#,B_VOYS0^1)OS#:MJ<@C
MF8+&WZ*T4 ?CA\:?$/PI\5_!6_\ ^%K6.HV6NG]G#PX/@7;>.I//\6?VR8=3
M28Z5(ZH\FNFY32/,>V1+EF^R,45605]8_M]^/_ NHZ5\#_#WQAUOP9J?P^T#
MQA:VGQ<MM9O+>?2-.G?P]?SZ<FLH28HH)+\V<B?:0(FE-J>ICS]O44 ?D7\/
M?^%*6+_#>#XY_P#"%C]E6YD^)%Q\/QXU\K_A%0PUZU&DB#[1^X'_ !+#?G3\
M\FU=S;Y7I^@7_!,RS\1:?_P3W^#47BLZW_;R^$=/-R-9+_VDH,"F-;GS/G$X
MC*!P_P X8,&^;->Y44 >,_''2/&TOQ1^'S6?B#PM!:R^)IAI\<WAZ>62U;^R
M-2),KB]42C8)!A5CY93G"E6ZG_A'OB?_ -#?X#_\)"[_ /EG1\7_ /DH/PK_
M .QHG_\ 3+JE=[0!P7_"/?$__H;_  '_ .$A=_\ RSH_X1[XG_\ 0W^ _P#P
MD+O_ .6==[10!P7_  CWQ/\ ^AO\!_\ A(7?_P LZ/\ A'OB?_T-_@/_ ,)"
M[_\ EG7>T4 <%_PCWQ/_ .AO\!_^$A=__+.C_A'OB?\ ]#?X#_\ "0N__EG7
M>T4 <%_PCWQ/_P"AO\!_^$A=_P#RSH_X1[XG_P#0W^ __"0N_P#Y9UWM% '!
M?\(]\3_^AO\  ?\ X2%W_P#+.C_A'OB?_P!#?X#_ /"0N_\ Y9UWM% '!?\
M"/?$_P#Z&_P'_P"$A=__ "SH_P"$>^)__0W^ _\ PD+O_P"6==[10!P7_"/?
M$_\ Z&_P'_X2%W_\LZ/^$>^)_P#T-_@/_P )"[_^6==[10!P7_"/?$__ *&_
MP'_X2%W_ /+.C_A'OB?_ -#?X#_\)"[_ /EG7>T4 <%_PCWQ/_Z&_P !_P#A
M(7?_ ,LZ;-X8^)EQ$R/XM\ NC@JRMX.NB&!Z@C^TZ[^B@#X(_:8_X(%_#']I
M_7_[?OM&^&O@WQC')Y\'B;P5X6OO#NJV\V"/.\RUU-$D?!ZRH]<QH'[!/[=7
M[&&BK_PJ7]J;P]\;]-M5_=^&_C#H,AD95[+JEO(]R[D< .54$#)Y-?H]10!^
M7=Y_P69_:"_9@NI(/VH?@=K/PCT^!B)/%?AOPA<>,_#"+VDENK340\((Y"F-
MF&"",@U[+:?\%C/A#J'P3F^(5O\ M2? >X\+VL]O;7$L/AN]DO+5YY%BC$MF
M-1-U&-S@DO$ BAG8JJ,P^WZ_.?\ X*!?\$5M _::_:[T+QMIW[/G[/WC'POI
MV@3PWEMJ?B>]\&W^I:O-<*WVJY:PTFZ^U)#!$JQB20 M<S[T;9&0 >86M]^T
M;_P<#:%<V6F^(&^#/[)<L[*/$,&AW&F>(/BG"I ,<5NUV\EOISX.7\Q#(IQA
MLLD?WS\ OV6M9_9:^%&D^!_A[=?"[PEX4T2/RK/3M/\ !5VD<?<LQ_M,L[L>
M6=R68DEB2<UN?L3^!?'OPN_91\"^&?B;<:%>>-O#FF)I>H7.CWLEY:W2P%HH
M)?->WMV>1X%B:0^1&OF-(%7:!7J5 '!?\(]\3_\ H;_ ?_A(7?\ \LZ/^$>^
M)_\ T-_@/_PD+O\ ^6==[10!P7_"/?$__H;_  '_ .$A=_\ RSH_X1[XG_\
M0W^ _P#PD+O_ .6==[10!P7_  CWQ/\ ^AO\!_\ A(7?_P LZ/\ A'OB?_T-
M_@/_ ,)"[_\ EG7>T4 <%_PCWQ/_ .AO\!_^$A=__+.C_A'OB?\ ]#?X#_\
M"0N__EG7>T4 <%_PCWQ/_P"AO\!_^$A=_P#RSH_X1[XG_P#0W^ __"0N_P#Y
M9UWM% '!?\(]\3_^AO\  ?\ X2%W_P#+.C_A'OB?_P!#?X#_ /"0N_\ Y9UW
MM% '!?\ "/?$_P#Z&_P'_P"$A=__ "SH_P"$>^)__0W^ _\ PD+O_P"6==[1
M0!P7_"/?$_\ Z&_P'_X2%W_\LZ/^$>^)_P#T-_@/_P )"[_^6==[10!P7_"/
M?$__ *&_P'_X2%W_ /+.C_A'OB?_ -#?X#_\)"[_ /EG7>T4 <%_PCWQ/_Z&
M_P !_P#A(7?_ ,LZ/^$>^)__ $-_@/\ \)"[_P#EG7>T4 <%_P (]\3_ /H;
M_ ?_ (2%W_\ +.C_ (1[XG_]#?X#_P#"0N__ )9UWM% '!?\(]\3_P#H;_ ?
M_A(7?_RSH_X1[XG_ /0W^ __  D+O_Y9UWM% '!?\(]\3_\ H;_ ?_A(7?\
M\LZ/^$>^)_\ T-_@/_PD+O\ ^6==[10!P7_"/?$__H;_  '_ .$A=_\ RSH_
MX1[XG_\ 0W^ _P#PD+O_ .6==[10!P7_  CWQ/\ ^AO\!_\ A(7?_P LZ/\
MA'OB?_T-_@/_ ,)"[_\ EG7>T4 <%_PCWQ/_ .AO\!_^$A=__+.C_A'OB?\
M]#?X#_\ "0N__EG7>T4 9GA*UUBST<)KM_IFHW^\DS6%@]E"5[#RWFF.1W._
MGT%:=%% !7!>'O\ DY[Q?_V*^A_^E>L5WM<%X>_Y.>\7_P#8KZ'_ .E>L4 =
M[1110 5P7[./_)/M0_[&CQ%_Z>KZN]K@OV<?^2?:A_V-'B+_ -/5]0!WM%%%
M !1110 445S'Q=^-O@S]G[P9)XC\>^+O#'@CP]%*D$FJ:_JL&FV22.<(AFF9
M4#,> ,Y/:@#IZ*\Z\7_M@?"7X>IX0;7_ (H_#K0U^(,:2^%CJ'B2SMAXE1_+
MV-9;Y!]I#>=#@Q;L^:F/O#/1_%7XO>$_@3X&N_$_C?Q1X=\&^&M/,:W6K:YJ
M4.G6-L9'6- \TS*B[G95&3RS #DT =%17F_C/]L;X1?#GX5Z+XZ\0_%3X<:#
MX)\2LB:1XAU'Q+96NE:JSHTB"WN7D$4I9$=AL8Y",1P#7H5A?P:K8PW5K-%<
MVUS&LL,T3ATE1AE65AP00001US0!Q'Q?_P"2@_"O_L:)_P#TRZI7>UP7Q?\
M^2@_"O\ [&B?_P!,NJ5WM !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %<%
MX>_Y.>\7_P#8KZ'_ .E>L5WM<%X>_P"3GO%__8KZ'_Z5ZQ0!WM%%% !7!?LX
M_P#)/M0_[&CQ%_Z>KZN]K@OV<?\ DGVH?]C1XB_]/5]0!WM%%% !1110 5\7
M?\%./"FN6O[3'P.\<1ZI\7M!\+>$]-\3VMQJOPX\'Q^*]7T_5;I-.^QM]C?3
MM0V1O;0:G";@6XV&<(9$68[OM&B@#\O/B?#\4;KX7?$F'XP_"SQEXK^)'QV_
M9[T/PGI\?A_PG/JEE_;ZQZPE[IUS/:K+!IG^D:A:2F2XDCML%F64^2P3Z'_:
MFU6[\'>)/@)J-WH'CGQ?H_P3\7POXQ.D^$=3U64&?PWJ%K;7]M"D#2:A''<W
M<.]K,3/"TA+!3')L^O** /S3^!>D:C^S7\5O"/Q1\6?#+XCR?#KQ(WQ+ETW2
M=,\$:AK6I^'GUGQ#9W]E]ITRVADNK3[99V\[D-$!$TGE3^2[;3]?_P#!-OX3
MZW\"_P!@;X0>$?$>GOI&N:!X5L+6\TUY1*VEN(5/V0LI*DP@B(E25_=_*2,&
MO;:* /&?CC\/M6OOBC\/IHO'/BFSCOO$TRP00V^FF/3C_9&I-NB+VC,3A67]
MZT@Q(W&[:R]3_P *@\0?]%4\>?\ @)HO_P KZ/B__P E!^%?_8T3_P#IEU2N
M]H X+_A4'B#_ **IX\_\!-%_^5]'_"H/$'_15/'G_@)HO_ROKO:* ."_X5!X
M@_Z*IX\_\!-%_P#E?1_PJ#Q!_P!%4\>?^ FB_P#ROKO:* ."_P"%0>(/^BJ>
M//\ P$T7_P"5]'_"H/$'_15/'G_@)HO_ ,KZ[VB@#@O^%0>(/^BJ>//_  $T
M7_Y7T?\ "H/$'_15/'G_ (":+_\ *^N]HH X+_A4'B#_ **IX\_\!-%_^5]'
M_"H/$'_15/'G_@)HO_ROKO:* ."_X5!X@_Z*IX\_\!-%_P#E?1_PJ#Q!_P!%
M4\>?^ FB_P#ROKO:* ."_P"%0>(/^BJ>//\ P$T7_P"5]'_"H/$'_15/'G_@
M)HO_ ,KZ[VB@#@O^%0>(/^BJ>//_  $T7_Y7T?\ "H/$'_15/'G_ (":+_\
M*^N]HH X+_A4'B#_ **IX\_\!-%_^5]'_"H/$'_15/'G_@)HO_ROKO:* ."_
MX5!X@_Z*IX\_\!-%_P#E?1_PJ#Q!_P!%4\>?^ FB_P#ROKO:* ."_P"%0>(/
M^BJ>//\ P$T7_P"5]'_"H/$'_15/'G_@)HO_ ,KZ[VB@#@O^%0>(/^BJ>//_
M  $T7_Y7T?\ "H/$'_15/'G_ (":+_\ *^N]HH X+_A4'B#_ **IX\_\!-%_
M^5]'_"H/$'_15/'G_@)HO_ROKO:* ."_X5!X@_Z*IX\_\!-%_P#E?1_PJ#Q!
M_P!%4\>?^ FB_P#ROKO:* ."_P"%0>(/^BJ>//\ P$T7_P"5]'_"H/$'_15/
M'G_@)HO_ ,KZ[VB@#@O^%0>(/^BJ>//_  $T7_Y7T?\ "H/$'_15/'G_ (":
M+_\ *^N]HH X+_A4'B#_ **IX\_\!-%_^5]'_"H/$'_15/'G_@)HO_ROKO:*
M ."_X5!X@_Z*IX\_\!-%_P#E?1_PJ#Q!_P!%4\>?^ FB_P#ROKO:* ."_P"%
M0>(/^BJ>//\ P$T7_P"5]'_"H/$'_15/'G_@)HO_ ,KZ[VB@#@O^%0>(/^BJ
M>//_  $T7_Y7T?\ "H/$'_15/'G_ (":+_\ *^N]HH X+_A4'B#_ **IX\_\
M!-%_^5]'_"H/$'_15/'G_@)HO_ROKO:* ."_X5!X@_Z*IX\_\!-%_P#E?1_P
MJ#Q!_P!%4\>?^ FB_P#ROKO:* ."_P"%0>(/^BJ>//\ P$T7_P"5]'_"H/$'
M_15/'G_@)HO_ ,KZ[VB@#@O^%0>(/^BJ>//_  $T7_Y7T?\ "H/$'_15/'G_
M (":+_\ *^N]HH X+_A4'B#_ **IX\_\!-%_^5]'_"H/$'_15/'G_@)HO_RO
MKO:* ."_X5!X@_Z*IX\_\!-%_P#E?1_PJ#Q!_P!%4\>?^ FB_P#ROKO:* ."
M_P"%0>(/^BJ>//\ P$T7_P"5]'_"H/$'_15/'G_@)HO_ ,KZ[VB@#@O^%0>(
M/^BJ>//_  $T7_Y7T?\ "H/$'_15/'G_ (":+_\ *^N]HH S/"6@W7AS1Q;7
MFM:GK\P<L;N_CMTF(/1<011)@=ODSZDUIT44 %<%X>_Y.>\7_P#8KZ'_ .E>
ML5WM<%X>_P"3GO%__8KZ'_Z5ZQ0!WM%%% !7!?LX_P#)/M0_[&CQ%_Z>KZN]
MK@OV<?\ DGVH?]C1XB_]/5]0!WM%%% !1110 445C^/OB#H/PJ\&ZAXB\4:W
MI'AOP_I$)N+_ %/5;R.SL[*,=7EFD*HB\CEB!0!L45P7Q&_:I^&'P>U+PU9>
M+OB/X"\+7GC1@GAZ#5_$%I8R:Z28U M%ED4SG,L0_=[N9$_O#.W\5?B]X3^!
M/@:[\3^-_%'AWP;X:T\QK=:MKFI0Z=8VQD=8T#S3,J+N=E49/+, .30!T5%>
M;^,_VQOA%\.?A7HOCKQ#\5/AQH/@GQ*R)I'B'4?$ME:Z5JK.C2(+>Y>012ED
M1V&QCD(Q' ->A6%_!JMC#=6LT5S;7,:RPS1.'25&&596'!!!!!'7- '$?%__
M )*#\*_^QHG_ /3+JE=[7!?%_P#Y*#\*_P#L:)__ $RZI7>T %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 5P7A[_DY[Q?_ -BOH?\ Z5ZQ7>UP7A[_ ).>
M\7_]BOH?_I7K% '>T444 %<%^SC_ ,D^U#_L:/$7_IZOJ[VN"_9Q_P"2?:A_
MV-'B+_T]7U '>T444 %%%% !7QK_ ,%A_@3\6/CQ\(+NU\'>%?!WCCPAH_AG
M6[Z]T+4=>O=/U"[UC[(T>GSP00:?=K>FW#W$D=LYBW77V5PZM"IK[*HH _,C
MXW^'O&6B>"OBIH_C?X1^*]?\0?&;X :+X*\,6GAK0K[Q%I\6J0IK,4VFW%\M
MK&+#][?V4IEO4MX<%F\PF!]OO?[4VJW?@[Q)\!-1N] \<^+]'^"?B^%_&)TG
MPCJ>JR@S^&]0M;:_MH4@:34(X[F[AWM9B9X6D)8*8Y-GUY10!^:?P+TC4?V:
M_BMX1^*/BSX9?$>3X=>)&^)<NFZ3IG@C4-:U/P\^L^(;._LOM.F6T,EU:?;+
M.WG<AH@(FD\J?R7;:?K_ /X)M_"?6_@7^P-\(/"/B/3WTC7- \*V%K>::\HE
M;2W$*G[(64E2801$2I*_N_E)&#7MM% 'C/QQ^'VK7WQ1^'TT7CGQ39QWWB:9
M8((;?33'IQ_LC4FW1%[1F)PK+^]:08D;C=M9>I_X5!X@_P"BJ>//_ 31?_E?
M1\7_ /DH/PK_ .QHG_\ 3+JE=[0!P7_"H/$'_15/'G_@)HO_ ,KZ/^%0>(/^
MBJ>//_ 31?\ Y7UWM% '!?\ "H/$'_15/'G_ (":+_\ *^C_ (5!X@_Z*IX\
M_P# 31?_ )7UWM% '!?\*@\0?]%4\>?^ FB__*^C_A4'B#_HJGCS_P !-%_^
M5]=[10!P7_"H/$'_ $53QY_X":+_ /*^C_A4'B#_ **IX\_\!-%_^5]=[10!
MP7_"H/$'_15/'G_@)HO_ ,KZ/^%0>(/^BJ>//_ 31?\ Y7UWM% '!?\ "H/$
M'_15/'G_ (":+_\ *^C_ (5!X@_Z*IX\_P# 31?_ )7UWM% '!?\*@\0?]%4
M\>?^ FB__*^C_A4'B#_HJGCS_P !-%_^5]=[10!P7_"H/$'_ $53QY_X":+_
M /*^C_A4'B#_ **IX\_\!-%_^5]=[10!P7_"H/$'_15/'G_@)HO_ ,KZ/^%0
M>(/^BJ>//_ 31?\ Y7UWM% '!?\ "H/$'_15/'G_ (":+_\ *^C_ (5!X@_Z
M*IX\_P# 31?_ )7UWM% '!?\*@\0?]%4\>?^ FB__*^C_A4'B#_HJGCS_P !
M-%_^5]=[10!P7_"H/$'_ $53QY_X":+_ /*^C_A4'B#_ **IX\_\!-%_^5]=
M[10!P7_"H/$'_15/'G_@)HO_ ,KZ/^%0>(/^BJ>//_ 31?\ Y7UWM% '!?\
M"H/$'_15/'G_ (":+_\ *^C_ (5!X@_Z*IX\_P# 31?_ )7UWM% '!?\*@\0
M?]%4\>?^ FB__*^C_A4'B#_HJGCS_P !-%_^5]=[10!P7_"H/$'_ $53QY_X
M":+_ /*^C_A4'B#_ **IX\_\!-%_^5]=[10!P7_"H/$'_15/'G_@)HO_ ,KZ
M/^%0>(/^BJ>//_ 31?\ Y7UWM% '!?\ "H/$'_15/'G_ (":+_\ *^C_ (5!
MX@_Z*IX\_P# 31?_ )7UWM% '!?\*@\0?]%4\>?^ FB__*^C_A4'B#_HJGCS
M_P !-%_^5]=[10!P7_"H/$'_ $53QY_X":+_ /*^C_A4'B#_ **IX\_\!-%_
M^5]=[10!P7_"H/$'_15/'G_@)HO_ ,KZ/^%0>(/^BJ>//_ 31?\ Y7UWM% '
M!?\ "H/$'_15/'G_ (":+_\ *^C_ (5!X@_Z*IX\_P# 31?_ )7UWM% '!?\
M*@\0?]%4\>?^ FB__*^C_A4'B#_HJGCS_P !-%_^5]=[10!P7_"H/$'_ $53
MQY_X":+_ /*^C_A4'B#_ **IX\_\!-%_^5]=[10!P7_"H/$'_15/'G_@)HO_
M ,KZ/^%0>(/^BJ>//_ 31?\ Y7UWM% '!?\ "H/$'_15/'G_ (":+_\ *^C_
M (5!X@_Z*IX\_P# 31?_ )7UWM% '!?\*@\0?]%4\>?^ FB__*^C_A4'B#_H
MJGCS_P !-%_^5]=[10!P7_"H/$'_ $53QY_X":+_ /*^C_A4'B#_ **IX\_\
M!-%_^5]=[10!F>$M!NO#FCBVO-:U/7Y@Y8W=_';I,0>BX@BB3 [?)GU)K3HH
MH *X+P]_R<]XO_[%?0__ $KUBN]K@O#W_)SWB_\ [%?0_P#TKUB@#O:*** "
MN"_9Q_Y)]J'_ &-'B+_T]7U=[7!?LX_\D^U#_L:/$7_IZOJ .]HHHH ****
M"BBO-OVC?VL_!'[*6BV]_P",KK7HXKJ&XNEBT;PUJ>OW,=O;JK7%S)!I]O/+
M';Q;XP\[J(T,L89@74$ ])HKQ?XV?\%"/A%^SY>Z=%XF\4SB/4M)37_M>E:+
M?ZS9:?I;OL34;VYLX)H;*S8[MMS<O%$PCE(<B-RO8?'+]HOPC^SGX*M-?\57
M]Y%9:E>PZ=I\&F:7=ZQ?ZI<RAF2&UL[.*6XN)"B.Y6*-R(XY'.$1F !W%%>%
MZU_P4D^#VB_#/PUXL7Q#K6JZ;XNDO8M,M-&\*:OJVKR-9,4O1)IUK:R7L'V5
MU\N<S0IY$A5)-CLJGUSX?^/]%^*W@71_$_AO4[/6_#_B"RAU'3=0M)!)!>V\
MJ!XY48<%65@0?>@#FOB__P E!^%?_8T3_P#IEU2N]K@OB_\ \E!^%?\ V-$_
M_IEU2N]H **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K@O#W_)SWB__ +%?
M0_\ TKUBN]K@O#W_ "<]XO\ ^Q7T/_TKUB@#O:*** "N"_9Q_P"2?:A_V-'B
M+_T]7U=[7!?LX_\ )/M0_P"QH\1?^GJ^H [VBBB@ HHHH *^=/\ @HKX@^*=
MQX$TCP?\.?AUXN\7:5XV:XL/%FM>&]1T>WU+PYIH5!(MM%J-[9H]S<H\D4<H
MD*VQ#3,DA1(9?HNB@#X#^.7P#^)FC6'Q+TKX?_!36;_P_P#&_P"#>D> -*L9
M]<TBW3X=W5K%JML(-55[QM]JD6IQ,9+!KQC]GG4(V8VD]5_:*\!^.M"\0?!O
M5_"7P]\3>,H/@-XCC>XL8-0TJSN/%=E<>'[W3GN-/\^[2,26\MXF^.[:VW!)
MO+9L)YGU/10!\ ?"/X&?&']F7XG^'/B^GPEUGQA>>)/^$[?6?!FAZYI$.I^&
MGUS7+/5+$O+=74-G,5ALQ%<F&=MDT@,?VB,%Q]2?L&_ S5/V:/V,OAEX#UTV
M!USPQX>M+/4A8L6M8[H1@S)"Q +1+(656(!*J"0,XKUNB@#QGXX_!W2=5^*/
MP^N9;OQ2LFJ^)IDG$/B;4H8T']D:D_[I$G"PG*+S$%."R_=9@>I_X9Q\/_\
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
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 5P7A[_ ).>\7_]BOH?_I7K%=[7!>'O^3GO
M%_\ V*^A_P#I7K% '>T444 %<%^SC_R3[4/^QH\1?^GJ^KO:X+]G'_DGVH?]
MC1XB_P#3U?4 =[1110 4444 %%%% 'PU^W%^S[\5?&.O_M$>$O#'P^O/%VB_
MM(^"K+PG8^(H=6T^&R\'3FWN["XFU""YN(K@PQ1W*7*FSCN'<K(OEJP4OZ5^
MTMI/CVU^+_PR\7^%?AEXK\6:?\)=:O+.[TRWU32+:]\06=YI)A6^L//O(X6$
M,SK&\=U):N<3,@8!/-^FZ* /SX^"WP%^,O[(6LZ1\0+?X1:E\0+[Q=I7C"?5
M?">BZYI,%SX8O]9\23:[:VTK7EU!:RQ)'<&VGD@GD*R09C6:-PR_6O[#_P !
M+S]E?]C/X4_#34;RVU'4O /A'2_#]Y=6V[R+F>VM(H9'CW -L+HQ7(!P1GFO
M4J* /+/BG^SE:^./'GAG58[KQ*%M]9DO-2$?BC4H$BA-A=Q P1I.%B;S9(1^
MZ"':7&=K,#K?\,X^'_\ H(^//_"XUK_Y+K"\(?MH^"_%/[0OBSX8W#ZCH'B?
MPM=16L8U:)+>VUTO!:S$V,N\B8QB]ME=#MD4S1G9LDC=_6J ."_X9Q\/_P#0
M1\>?^%QK7_R71_PSCX?_ .@CX\_\+C6O_DNN]HH X+_AG'P__P!!'QY_X7&M
M?_)='_#./A__ *"/CS_PN-:_^2Z[VN;^+_Q8T/X$_"_7?&/B6Z>RT'PW9R7]
M]-' \[K&@R=L: N['H%4$DD #F@#C+_]FN!OB+I4D&K>.!X=73;Q;Z(^-]8W
M/=&6U^S,/]*W8""Z!P0/F&0>,;7_  SCX?\ ^@CX\_\ "XUK_P"2ZL?"7X]^
M'_BV\NG6][86/B_2[.UNM>\+2:G:7&L>&FGCWI#>102R")^H')5MIVDCFNUH
M X+_ (9Q\/\ _01\>?\ A<:U_P#)='_#./A__H(^//\ PN-:_P#DNN]HH X+
M_AG'P_\ ]!'QY_X7&M?_ "71_P ,X^'_ /H(^//_  N-:_\ DNN]K@_C5^T%
MI/P2U+PIIUW::CJ>K^--672M,L;)$WOM1IKFX=Y&6..&WMXY9G9V'RQ[5#2,
MB, 8GA7]FN"+7?$AU35O'$EC)J2-HZKXWUC,5K]DM@RMBZ!S]H%R?FR<,.<8
M VO^&<?#_P#T$?'G_A<:U_\ )=;_ ,-_BEX9^,GA*#7_  AXBT+Q5H5T[QPZ
MEH]_%?6DS(Q1PLL3,A*LI4@'@@@\BMZ@#@O^&<?#_P#T$?'G_A<:U_\ )='_
M  SCX?\ ^@CX\_\ "XUK_P"2Z[VB@#@O^&<?#_\ T$?'G_A<:U_\ET?\,X^'
M_P#H(^//_"XUK_Y+KO:\S^+?[5WA+X(>-UTOQ-?VFB:?:Z4=9U;6]1O8++3M
M'MVE\BW$LDKJ6DGF#(BH&YC;.W*!P"I\-OV:X+?X=:!'XDU;QQ/XB33;==4E
MC\;ZP%DNA$OG,-MT%P7W'Y0!Z 5M?\,X^'_^@CX\_P#"XUK_ .2Z['P_X@L/
M%F@V6JZ5>VFIZ9J=O'=V=Y:3+-!=PR*&22-U)5T92"&!((((JY0!P7_#./A_
M_H(^//\ PN-:_P#DNC_AG'P__P!!'QY_X7&M?_)==[10!P7_  SCX?\ ^@CX
M\_\ "XUK_P"2ZQ?'W[-<$^A0#0=6\<0WPU*P:5G\;ZQ@VHNX3=+\UT1DVXF
M[Y(P0<$>KUY/I?[9W@.7XAS>'-5US2/#=W<:Y)X<T,:MJ=M:R^)KZ':MQ'9P
MF3S7$<KK"25!:0X4$,C. ;?_  SCX?\ ^@CX\_\ "XUK_P"2Z/\ AG'P_P#]
M!'QY_P"%QK7_ ,EUWM% '!?\,X^'_P#H(^//_"XUK_Y+H_X9Q\/_ /01\>?^
M%QK7_P EUWM% '!?\,X^'_\ H(^//_"XUK_Y+K%O_P!FN!OB+I4D&K>.!X=7
M3;Q;Z(^-]8W/=&6U^S,/]*W8""Z!P0/F&0>,=W\2OB-I'PC\!ZIXEUZY:TTC
M1X#<7,B0O-)@<!4C0,\DC$A51%+.S*J@D@5R/[,'[1R?M(^$-7O)_#>M^"]<
M\/ZM+I&K:!K!B-_ID@2.>#S?*=T!EM9[:<!6.!.!DD$T 7?^&<?#_P#T$?'G
M_A<:U_\ )='_  SCX?\ ^@CX\_\ "XUK_P"2Z[VB@#@O^&<?#_\ T$?'G_A<
M:U_\ET?\,X^'_P#H(^//_"XUK_Y+KO:* ."_X9Q\/_\ 01\>?^%QK7_R76+X
M5_9K@BUWQ(=4U;QQ)8R:DC:.J^-]8S%:_9+8,K8N@<_:!<GYLG##G& +O[3?
M[1T?[._A"":S\-:_XY\5:NTD.A^&=#C5[[5Y40R289R(XHD0%GED8*/E4;I'
MC1^N^&7Q&TGXO_#?0/%F@7*WNA^)M.M]5T^X7I-;SQK)&WXJPH Y[_AG'P__
M -!'QY_X7&M?_)='_#./A_\ Z"/CS_PN-:_^2Z[VB@#@O^&<?#__ $$?'G_A
M<:U_\ET?\,X^'_\ H(^//_"XUK_Y+KO:* ."_P"&<?#_ /T$?'G_ (7&M?\
MR76+\-OV:X+?X=:!'XDU;QQ/XB33;==4EC\;ZP%DNA$OG,-MT%P7W'Y0!Z 5
M7^./[:WA3X _$BQ\.ZS:ZO*K#39-8U2 VR6'AB'4;Q[#3Y[UIIHW\NXNXY(E
M,"2E2C-((T^>O5]*U6UUW38+RRN8+RSND$L,\$@DCF0C(96&001T(H XK_AG
M'P__ -!'QY_X7&M?_)='_#./A_\ Z"/CS_PN-:_^2Z[VB@#@O^&<?#__ $$?
M'G_A<:U_\ET?\,X^'_\ H(^//_"XUK_Y+KO:* /*/'W[-<$^A0#0=6\<0WPU
M*P:5G\;ZQ@VHNX3=+\UT1DVXF [Y(P0<$;7_  SCX?\ ^@CX\_\ "XUK_P"2
MZY?1?VYO!>K?'>3P-*M_I@D^WPZ?KU_+:0:3K%Y87-O:WME;L9_/-Q#-<Q(0
M\**YW^6TGEOM]EH X+_AG'P__P!!'QY_X7&M?_)='_#./A__ *"/CS_PN-:_
M^2Z[VB@#@O\ AG'P_P#]!'QY_P"%QK7_ ,ET?\,X^'_^@CX\_P#"XUK_ .2Z
M[VLSQIXQTSX=^#M6\0:U=QZ?HVA64VH7]U("4MK>%#))(< G"HI/ SQ0!YW?
M_LUP-\1=*D@U;QP/#JZ;>+?1'QOK&Y[HRVOV9A_I6[ 070."!\PR#QC:_P"&
M<?#_ /T$?'G_ (7&M?\ R763\%OVM_#WQD^(>J>#7T[Q!X2\:Z3IT&M2^'_$
M%O';WLVG3N\<-[%Y<DD<D+.C(2KEHW&V148@'U.@#@O^&<?#_P#T$?'G_A<:
MU_\ )='_  SCX?\ ^@CX\_\ "XUK_P"2Z[VB@#@O^&<?#_\ T$?'G_A<:U_\
MET?\,X^'_P#H(^//_"XUK_Y+KO:Y#XR?&2R^#.A6%Q/I^JZWJ.M7RZ9I.D:8
MD37NJW31R2^5%YLD<0(BAFD)DD10L3G/0$ /A-X(OO 4_B6TGN]1N]+EU59M
M'^W:E/J$T5L;.U5U,DSO)_Q\+<$!F. W&!@5U]<1\ /VA?#'[2W@677O"]U-
M+#9:A<Z/J-I=0FWO=(O[:0Q7%G<PM\T4T;@@J>H(8$JRL>WH *X+P]_R<]XO
M_P"Q7T/_ -*]8KO:X+P]_P G/>+_ /L5]#_]*]8H [VBBB@ K@OV<?\ DGVH
M?]C1XB_]/5]7>UP7[./_ "3[4/\ L:/$7_IZOJ .]HHHH **** "BBB@ HHK
M/\6>+-+\!>%]1UO6]1LM(T;2+:2]OKZ]G6"WLX(U+R2R2,0J(J@DL2  #0!H
M5X/\=VU3X]^.?$/P:_X2KQ#\,+^XTZQ\3Z#XB\.7BQZEJ%K!<J+I8BZD*8+D
M6HF5E>-XKV)&#++(@X?]KK]JKPC/KFJ_#'XLZ/K'@WX8^*8+JR?Q/)JOV*2]
M6T$,UYOA5?.@TYHW,37NX#.\?N@T4SXOPW^#'QK@^.&E>'I+FQUSPM\&=7MK
MCPYX_P#$%Q,FL>(-,O$B2[TB9%0BZ,-G)*3>;@LUQ#8[E,D5PZ@&!\"?V9+[
M]K?X_P#B#5OC1X:UYM0^&&JV4=MJVFZ@^E^&_$7B&Q.(_$&GVRA;M;D6OD6\
MIDE:&)EE@B,P$DA^Z:** "BBLSQ'XSTKPC+I\>IZA:V4NKW)L["*60"2_G$,
MDYAA3[TDGE0ROL4%ML;''!H OW-W%9QAYI$B4NJ!G8*"S,%4<]RQ  [D@5\F
M_$^?QW^T)X-O/'OAGQ:/"?C'X/3:MHFN^!;R1KKPSKTB,CS6^I(J-(T=Q9+;
MS6\RH98%NT<(X>6"3R_]H;X^Z?\ M4?$WP]X9\9_#/2KS6/#<R7@^&7B:YMK
MU?&&G:G93LD:>;MMK77[>&VFE6TN&XC=U64+.)X_7_V!OV>O&WPE\;:WKEX^
MLV'@_6X9]/MM*\37*W/B!(+6:/\ LN6>2-Y(W=89;VW+O(TSV]MIGF,TBR8
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
MG9[98)5G+_(P\N#SQ]R? ;X-Z=^S[\(]$\'Z3+/<66BPL@FF"*\\CNTDDA5
MJ)ND=V"(JH@(5550 +OPCT[Q)H_PM\.VGC&^T_5/%=KIT$.KWMA&T=M>72H%
MEFC1N55V!8*>F[&3C-=%0 4455UK6K3PWHUWJ.H7,%E86$+W-S<3N$B@B12S
MNS'@* "23T H M5X;^T!=ZC\9_'6L?!=_$>O?#>;Q%HEKK^@>)O#U\(=5NX[
M6^C_ +2AA)4B)XMUDK$A@T=_T.& X_\ :U_;#\/:'=W7@CQEI.L:-\+_ !U:
MW?AJ?QM:Z@L,B/+I$M\\]K$$9Y+-;;*&]B+".X8*4PKR)PW@OX&?%S3_ (N>
M'?"?A6^TSQ)\-?AK?:=XJ\'>/=?OYY;]+&Y\R"Y\/[E5O[13["\NR\=_E$EK
MY@FFA\X@'&?#[]C+5?VI_CIXWLO'/@SPUH&I:-9W/@WQUX^TSPQ:6R?%6"<6
MDJ36C$+<6UXL"+'//F2.%RR6[LRA[?\ 0ZBB@ HHJAKGBG3?#,EBFHZA9V#:
MI=+8V8N)EC^U3LK,L29(W.0C$*.3M- %NZO(K&'S)I8X8P0I9V"C)( &3ZD@
M?C7S!\4]$\9?M;6FOQ:%XP?X?>-OA)J^J:=<^'I ;_P]XB$PAFL?[3A*JUS9
MW&FN ZJ/W<EW-L8R6JFO(OVE?VBK+]IWQ]X?\)^*_ASI;WV@WEGKUE\/O%TU
MO/#X_P!-U*TU"%+22.8+#8ZU$L#SQVMWE<E(Q(#*\EOZC^Q#^SGXR^'/Q)NO
M%(CUC0O"4QNM M-%\43K<:Z-$C$$^F+--')*&:SO)=7BA#R,YL[N'S&,D>*
M*?\ P3T^"$'C&R\)_%4_#^\^$MI;Z;<PZ9X:O;B:\U.<W,=JDEU<74LK2FVV
M6R1VMJR1F.%$=U1F2"W^NZ** "BBN0^*?Q>M?ASIEU%:VD_B+Q,+075EX>T]
ME;4+]3-';JX3/R0B6:,/,V(XU)9B%4F@#4^)>JZYH?PZUZ]\,Z9:ZUXCM-.N
M)M+T^YN3;0WUTL;&*%Y0K;%=PJEMIP#G%?&G[4>E7_CCP-I_QV\/7WBOXO?#
MWQM/H\TOPVW2V]U!#(+>&UGT62)DDL-5@N7EDD9I(E=9I8Y9(O)21:WB'XJI
M^T[J>M?$KP!KVK^%?VB_A7IM[9_\(7#J+ZQI&M6^GWMS%=6@AB55O;>[E,:&
MYC E@D2T)6)T>)_H;]BCX;^./ASX.U]O&.F^'_#T?B?5YO$EEX=TN]>^7PQ)
M>$S7=D9S&BS?Z2TLYD50#)<S*H"*F0"Y^R1^SM_PHGP_K%[/:Z=I6H^*Y;6[
MGTC3(O+L=#CAM(;:&TC^=O.>-(@'N#@S/EML:[(T]=HHH *X+P]_R<]XO_[%
M?0__ $KUBN]K@O#W_)SWB_\ [%?0_P#TKUB@#O:*** "N"_9Q_Y)]J'_ &-'
MB+_T]7U=[7!?LX_\D^U#_L:/$7_IZOJ .]HHHH **** "BBB@!LTRV\+22,J
M(@+,S' 4#J2:\ _:J^+GC7P+KUJT_A?PAJ7P>O;_ $CPYKYU*X8WNJ1ZO>QZ
M>TL/S"&."W-Q$TBRAFF1I0NS8ID]E^)WP\TSXN_#?7_"FMQ//HOB;3KC2M0B
M5MIFMYXVBE3/;*,PSUYKY>\*_L5>)#X@\5? [5K:#6_V67L;:[TV/5[F;^V-
M/E,K2+I%A<0SB7[);20P2I+,!)$K+ GF* \(!I?L]:'HG[5_[-_B/X3ZMXMU
M#5X_ E_-X,U?5=*NHVE\4Z,N1"CW3([,D]MM@N9(&1_M-O=*LBLA-?5%O;QV
MEND42)%%$H1$1<*BC@ #L*I>%?">E^!?#MAI&BZ=8Z3I6EVT=E9V=G L,%K!
M&NV.*-% "HJ\!0, =*T* "BBB@#)\:>/=#^&V@OJGB+6=*T#3(W2)KS4;N.U
M@5W8*BEW(7+,0 ,\D@"OBSX^_M;ZA\4M'^('A&XTG6(M>\->++:#3]4TW3HW
MM/AU=C4?*T&[U!VN%GNDO98H+EUM8F$=I>!90$)D?Z%_; ^!6K?%6T\)^(/#
M]EHNNZWX"U*;48O#^MX_LSQ%!-:S6MQ:R,580RF*9C%-L;8Z[6!CDD!X']D#
M]ASP_P"'+6;6/%'PWT_0GT?7&F\#Z7J,L%[J'A7246":&PDFA>2)HH-0%Y/:
MPB22.UCE@6/88]J@'>?#W1O#W[7VC?#SXG2MKEC!IS-JH\-2/%'!::RBM:R&
M\"Q^9)=6;+/;[3)Y2NI;8SI&Z>S4B((QA0 ,DX [GDTM !1110!A_$/Q%J/A
MWP7K-SH6F1Z_XAM-/FN=/TDW:VQU"95/EQF1LB-6?:I?!VYS@]#\?>+OVE=9
M^%?Q=T_Q-\2[[P9I'B[X;>(U\)ZU_8L[Q6WB?P]J=A#>M<Q032-*CV4L?VF3
M<9-MOIUZR$"9@OJ_[:/[*4WC.6[^+/@276K#XV>#='V>&+NQ=)!=K"9YCIDU
MO++%#-;7;2[)D>1,E('62.2"*1.C^!/[-%M9>,_^%K^.O#?A.+XU^(=&CTO7
M+W1VN)K.T@61W6UMS.Q/"-%'+,JQFX-O&S(BJD: '6>"O@/I7@SXJ:[XQ%YJ
M>HZQK-I!ID NGB%OHUA#EDL[6*-$5(O,=W+,&D8L SE4C5.WHHH **** /"_
MVQ/VP=(^ 7P_U"]LO$GA^VE\/ZG8P^*+EA_:,OA6QF;)N9[2)Q)\_P D:%L
M-.CG<JE3YI^SK\?8]3_; \;^$M2\+^+?A]'\03%J4&DZ[;VC3:9KD%K'(98W
MAEN+9OM=DD-Q&BL=DVE:@9!N/S87C;]AOQ/HWQ'M=+TOP9H_B" ^,;CQ!I/C
MG[5;PW.FZ9J6HFZUO1=8AD/FWUK-#+<Q($$HE!MQ((9(%N3]7_"+X$>#_@)X
M?DTOP=X=TWP_833_ &F2*UCQODV+&"2<D[8U2-1G"HBHH"J  !OP2^#&F_ K
MP2=&TZZU/4I+F[GU+4-2U*99;W5;R>0R37,S*JIO=B?E1$C0!51$154=?110
M 4CN(D+,0JJ,DDX %+6/\0?!%C\3/ 6M^&]3\_\ LWQ!I\^FW?DR&*3R9HVC
M?:XY5MK'!'0T >.?M5_&SQW\+K^'5;'PYX1U+X5V1TR'Q#-J=R3=:I#?WHM)
M_LH#>4BVL3I,WG!A.)-B^7MWGC_V;]&T3X__  ,\7?!:;Q?J%S'\.K^;PN^K
M:+>1&YU;P^TSI!#]I99' ,<$NGW$B,DQN--NBKQL%89OA_\ 8J\2:1XQ\3_!
M'[):ZA^RGK&CBX%IJ<\JZAHKS>>AT;29X)UECMHI$AN%:90;5<0PF1'3[)]4
M>"? ^C?#;PGINA>']+L-&T;1[6.RL;*R@6&"T@C&U(T10 JJ. !0!<T?2+;P
M_I-K864$=M9V4*6]O#&,)%&@"JH'8   ?2K-%% !67XR\;Z+\.O#T^K^(-7T
MO0M)MBHFO=1NDM;>(LP5=TCD*,L0!D\D@5J5Y#^U_P# S5_C!X?\+:KX=31[
M[Q#X!UO^W['2=:R=+UT&TN;2:SN.&\O?#=2^7,$<Q2K&VUUWHX!\Z_M-_M<W
MOC^P^*'A-M,U>35O!>N6%UI^IZ5I\3V_P_Q+$^D:M?N]PDMW!=3J)66SC?%H
M)T<<,7^@O!&C>'OVRO"7P]^(4YUO3[*SG&LR^&7:*.&/6("(B+X"/S)+BQGA
MDC"B01B2+)5S'&R>=_LD?L-:!817FJ>+/AAIWARUTG7/M/@?0]2FMK^\\)Z>
M([>4V0DMW>$6JZ@EQ<6]L'D2 /&5\O:D4/U2B",84 #). .YY- "T444 %9'
MCGQ!>>'/"6JW6E:;_;FM6EA<7=CI*7*6\FIRQIE85=_E3>Y1-[?*I<$UKUX'
M^V5^R<GQ/5_B3X6NM<TGXP>!M+D?PEJ>FE)9$=/,E>Q:WEDBAGM[PE8IH99$
M5PD+"2)XHY4 /&?BC^TMKGP@^(J>*/BC>^!M%\7_  @U:WM[^31+ETM_$?A?
M5[5I;I4AG8S++:O8RW; %MZ:,S+M$KHGU7X7^ ^E>&OB]J?C5KO4M0U:[L(]
M(L8KEHA:Z#8KL9K6TCCC0*CR(LCLY=V94&_8D:+Q/P!_9L-YXNL?B_\ $WPO
MX/@^.>JZ!'HFJ7.BO<366F6BS33):0&9R&91.4DG5$,VP9545$7VV@ HHHH
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
MZ/J7PY\(/<:^=4N5M++[+=07$NG9>=PC+-=Q/%N1I%C26)I #] :*_/+X@^
M?V0_!NFZ7J.E_L1>"O%^C7?@NV\?ZCJ&E_#SPC;Q>'](G$C++=)>W%O*65(I
M69($F8!",$D [?[6OP;_ &*OV0]&\#7>K?LN_ [6G^(FH#3M%@MO"7A#23.Y
MC\P'S-6FLH22"H$:R-*S. L9YP ?>5%?!-M\)/V+(_&OC'3]3_9-^&6B:)X1
MT[6]33Q+>?"_0FTK7(M%EC@U86OE*]QOM9I1&5GAA,Q61H/.2-W7LOV<?V*/
MV5/VA]!UF63]C[X7>!=:\-ZBNF:MH/B7X;^'DO[&5[6"[C):U%Q;R(\%S"X:
M*9P"S(VV2.1$ /L2BO /^'3_ .RS_P!&U? #_P -YI'_ ,CUP/\ PR+^PC_P
MO?\ X5A_PJ/]EG_A8?E^9_PCW_"&Z)]O_P!3Y^SR_(SYGD?OO+^_Y7[S;L^:
M@#Z]HKP#_AT_^RS_ -&U? #_ ,-YI'_R/7F'[1?[&G[+WP#U'PMING_L6?#;
MXBZYXON9[:QTSPUX!\*13J((3-)([ZA+:0A H[2%B2,+WH ^SJ*^-OA'^RA^
MQ-\6_AAI/B?_ (9]_9X\-KJ=LL\NFZWX'\/V]]IS&Z-F8IE5'3<+M6@W1N\;
MR#".X*DU[CX!_P#!.ZS\'^(/$,O@K]BZ+0/"6H#2-<U-]'\,K9Z+>EMHM;F4
MILAF+<"-R&SQB@#[1HKXF\9? +]@;PH^O6EK\'_V6O$FO^&;:RO=3T#1/"GA
MV\U>SMKQ[=;>XDM@@=(G%U X=L!DD4J3N7,FO_LD_LJ0>!M:U;P]^QC\//'%
M_HWB2;PN-%T/X:>'?MMW<Q/MDD5[@PVT4"@,WF7$\0PNW[[(C 'VK17Y_?#K
MX;?L7_%'QIX4TW2OV0OAT^D^*8;)&\0/\,?#XTS1M0N[5[J#3+HC,XN3$@):
M**2W!EB4S!I%!S;7PE^QUJD%VMC^Q-X0OM2NI[=/"FGQ_#+PPD_CVWGFGB2[
MTYY)%A2';;32M]MDM76)5<H Z;@#]$Z*^5O^"+][H6I?L#V-QX7T/_A&/#,_
MCGQS)I&C?84L/[)LSXPUDP6WV=/DA\N,JGEKPFW:.!7U30 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !7!>'O^3GO%_P#V*^A_^E>L5WM<%X>_
MY.>\7_\ 8KZ'_P"E>L4 =[1110 5P7[./_)/M0_[&CQ%_P"GJ^KO:X+]G'_D
MGVH?]C1XB_\ 3U?4 =[1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110!X!\1O^4IGP;_ .R5>//_ $[^#:\*U_\ X(0_V_KM[??\-E?M
MZ67VVXDG^SVOQ:\N"#<Q;9&OV0[4&< 9X %?0O[1O[.7C[Q[\?/ WQ%^'7CG
MPAX0UOPAX?USPY/!XC\(W/B&UO[?4[G2;AF58-1L6BDC?28P"7<,)F^4$ UG
M_P#"N?VIO^BQ_ #_ ,,WJ_\ \T] 'PC^TQ_P;%_$#XN_$7P[K'AC]N[]I&PM
MO#"BYT[_ (3/4+GQ1J.G7^]B]S:W4=Y9BW!00@*L6\&,GS"&"I[=_P ."_\
MJ]3]O_\ \.]_]R5] ?\ "N?VIO\ HL?P _\ #-ZO_P#-/1_PKG]J;_HL?P _
M\,WJ_P#\T] '/:/_ ,$O-"M_V5K'X2>)_'GC[XQ>'XO%=GXEO[KXJWD?BV\U
M2*"YAG-A*9$C1H&\G"AD8+O8X;I6E\1O^";OA/5]"N=)\$P^'?AQHD/A:70-
M'TG1O#L$.G:5.VI1ZFMQ]GB:.-HC<Q!I8 $\T.^9%+9J_P#\*Y_:F_Z+'\ /
M_#-ZO_\ -/1_PKG]J;_HL?P _P##-ZO_ /-/0!Y]\3O^"8GB'XK?"O3;#4/B
M1HD/C#_A+K_QCJVJ6_A%UTN\NKBV>&.."P:^+0Q(RVK.LEQ,9?+G#$&?='WG
M_#%NNZI^R3\1_ NJ>--(G\9?$VXU#4-2U^S\.O;:7;7ER%56ATXW;R+$B1Q9
M1KMF=A(QD!?B7_A7/[4W_18_@!_X9O5__FGH_P"%<_M3?]%C^ '_ (9O5_\
MYIZ ///V@O\ @GQ\8/VJ+KPP_C+XYZ!:Q:'<I/=VGA?PIK&AV=_Y5S%<P[H8
M]>9)CNBV2+>B[BV,?*BMY"\CX]W_ ,$JO&=SX-U#2C\3O!V^S:2+PO=6_A#5
MM+N-%@GU.34KEI;G3M=M;N6Z:5HT2>WGM0L?VA7CF%R^/6_^%<_M3?\ 18_@
M!_X9O5__ )IZ/^%<_M3?]%C^ '_AF]7_ /FGH [7X8_";Q1X2^%H\$ZUXBMM
M?TNP\,66B6FL312'5+VY2"2&ZN;K<Y5M^(64 [LF3<S'#5Y%<_\ !,6RU;PA
M!HM]XNG:U^Q:#I]U);::()YHM,TVYL&V/YK;&E%RS@X;RR,8?.:ZC_A7/[4W
M_18_@!_X9O5__FGH_P"%<_M3?]%C^ '_ (9O5_\ YIZ .@_9J^!'C;X-:<1X
MB\7^#/$-Y=W$0OI=(\%_V(D]K!9I;6Z*/M<TGG@QH7EFDE5E4)''" ,>%?'/
M_@B__P +Q^+_ (B\7_\ #6'[:G@__A(;Z2]_L7PS\3O[/T?3-YSY-K;_ &9O
M*B7LNXX]:]5_X5S^U-_T6/X ?^&;U?\ ^:>C_A7/[4W_ $6/X ?^&;U?_P":
M>@#Y.^/7_!MC:_&SX8:AH4_[87[9VHW+E+K3QXI\?C7=+M;R)Q);W$MF88C+
MY<BJX"RQL"H(=2,UL?#O_@W/TOX7^!-(\.Z)^U_^W-HFDZ-:1VEK8:1\4$L;
M"T1% "00):;8HQV0< <9-?3/_"N?VIO^BQ_ #_PS>K__ #3T?\*Y_:F_Z+'\
M /\ PS>K_P#S3T <U^R?_P $QKK]D>\\5W=C^TA^U!X^O?$NCR:5;OX^\9Q>
M(X=!D8Y6]M()K81"X0@8,BNA&0R,"17GMY_P1_U35OAGXETB7Q+\'M,N/$^I
M65]J&C:#\+YM*\$ZT(([U9'U+18]6+75U*]XLK7*W4+B33M.8#_1AN]G_P"%
M<_M3?]%C^ '_ (9O5_\ YIZ/^%<_M3?]%C^ '_AF]7_^:>@#D?A?_P $K/##
M>+=*UWXQ2>&/CQK&@:8UAI=_XM\,KJ-W8R'4KN_-PDU[/=.CYN5C C**B6\2
MH%551>]_;3_90US]J;P[%IVB>+="\*1WNCZKX9UB34/"4&N2SZ9J44<5R+21
MY(GM;D+$NQRTMN<GSK6XVQ^70_X5S^U-_P!%C^ '_AF]7_\ FGH_X5S^U-_T
M6/X ?^&;U?\ ^:>@#FH_^";#:MJGC/2M:\9Q7GP\US2/%6DZ)H=IH26U]I \
M27"7.I2SWCRR+=,LHE%N%@A")<2++]H8(Z][\&OV9/$GACX?_$*#QKX].N>,
MOB7.TNI^(/#.DGPY_9P&G6^GQ?88FGN7A=$MQ-O>:4^?+(PVILB3'_X5S^U-
M_P!%C^ '_AF]7_\ FGH_X5S^U-_T6/X ?^&;U?\ ^:>@#Y__ .'!?_5ZG[?_
M /X=[_[DKE8/^#;#1K7Q4]['^US^VK':R7IUIU7XC(+IM6*>2;\S?9<&7R/W
M6[9YFWCS-ORU]5?\*Y_:F_Z+'\ /_#-ZO_\ -/1_PKG]J;_HL?P _P##-ZO_
M /-/0!\__P##@O\ ZO4_;_\ _#O?_<E>S^)?^"7/@;XE_"KX8>!OB'?:G\9/
M#7PY6^$K?$=8_$6IZ\]S!)$LT]RX7$\7FG9*J;@%4*5(W5L_\*Y_:F_Z+'\
M/_#-ZO\ _-/1_P *Y_:F_P"BQ_ #_P ,WJ__ ,T] '!:S_P33\5MX5\ :%I'
MQ*\,Z9I/A/2M/\-:A&?!#,]_I&F:K#>Z;#;"*^BBM)DB@2":0QRQR\O'#;C$
M8R(/^"77C>V^&_C#1H_BKH<=QX@UBQU'2$BTWQ1#IWA..W:[9AIRQ^)5O;*2
M07(C(LKVWM5AB\M;4"23?ZI_PKG]J;_HL?P _P##-ZO_ /-/1_PKG]J;_HL?
MP _\,WJ__P T] 'AG@7_ ((L7_@[Q/<S7/Q7O/$6G/ KP3:Q'KEWJ4=[)):S
M7ER5.M?V4//E@D)$6F1.%D0&1V1I)/;?BK^Q_P"-=:^#/BCPQX&^).G>$KWQ
M=XON?$.H7U[X?N+U);&X<O+IP6VO[2=-QV*9XKA'VA@H4L&6;_A7/[4W_18_
M@!_X9O5__FGH_P"%<_M3?]%C^ '_ (9O5_\ YIZ ,?P=^PAXAT#XF^'M3N?&
M7A&#PM:7.F:WK/AW0_!9TV&\U;3['[#;/9NUY+]CLA#':?Z*4F<-:)MN%5F0
M\UI'_!-/Q7X:DTR^T[XG:"NM?#MK6U^&TUSX+\RU\/6$,ER#!?Q+>H]_(]M=
M- TL,MF,11N(PV_?WO\ PKG]J;_HL?P _P##-ZO_ /-/1_PKG]J;_HL?P _\
M,WJ__P T] '/_P#!'SP9<?#C]B)?#UWJ3:S=Z#X_\>:=/J#0+ ;YX?&.M1M,
M8U)5-Y4MM!P,X'2OI^O+_P!C[X!ZK^S9\$1X:UWQ!I_BG6[KQ!KWB/4-2L-*
M?2K6:XU;6;W595BMGGN&CCC>]:-0TTA(C!+9->H4 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 5P7A[_DY[Q?_ -BOH?\ Z5ZQ7>UP7A[_ ).>
M\7_]BOH?_I7K% '>T444 %>6>#=%^(OPYLM1TZR\/^"M3LI=9U/4;>YG\2W-
MK*\=U?3W2AXQ82!643!3AV&5ZUZG10!P7_"0_$__ *%#P'_X5]W_ /*RC_A(
M?B?_ -"AX#_\*^[_ /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_X2'XG_\
M0H> _P#PK[O_ .5E=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\ A(?B?_T*
M'@/_ ,*^[_\ E97>T4 <%_PD/Q/_ .A0\!_^%?=__*RC_A(?B?\ ]"AX#_\
M"ON__E97>T4 <%_PD/Q/_P"A0\!_^%?=_P#RLH_X2'XG_P#0H> __"ON_P#Y
M65WM% '!?\)#\3_^A0\!_P#A7W?_ ,K*/^$A^)__ $*'@/\ \*^[_P#E97>T
M4 <%_P )#\3_ /H4/ ?_ (5]W_\ *RC_ (2'XG_]"AX#_P#"ON__ )65WM%
M'!?\)#\3_P#H4/ ?_A7W?_RLH_X2'XG_ /0H> __  K[O_Y65WM% '!?\)#\
M3_\ H4/ ?_A7W?\ \K*/^$A^)_\ T*'@/_PK[O\ ^5E=[10!P7_"0_$__H4/
M ?\ X5]W_P#*RC_A(?B?_P!"AX#_ /"ON_\ Y65WM% '!?\ "0_$_P#Z%#P'
M_P"%?=__ "LH_P"$A^)__0H> _\ PK[O_P"5E=[10!P7_"0_$_\ Z%#P'_X5
M]W_\K*/^$A^)_P#T*'@/_P *^[_^5E=[10!P7_"0_$__ *%#P'_X5]W_ /*R
MC_A(?B?_ -"AX#_\*^[_ /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_X2'X
MG_\ 0H> _P#PK[O_ .5E=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\ A(?B
M?_T*'@/_ ,*^[_\ E97>T4 <%_PD/Q/_ .A0\!_^%?=__*RC_A(?B?\ ]"AX
M#_\ "ON__E97>T4 <%_PD/Q/_P"A0\!_^%?=_P#RLH_X2'XG_P#0H> __"ON
M_P#Y65WM% '!?\)#\3_^A0\!_P#A7W?_ ,K*/^$A^)__ $*'@/\ \*^[_P#E
M97>T4 <%_P )#\3_ /H4/ ?_ (5]W_\ *RC_ (2'XG_]"AX#_P#"ON__ )65
MWM% '!?\)#\3_P#H4/ ?_A7W?_RLH_X2'XG_ /0H> __  K[O_Y65WM% '!?
M\)#\3_\ H4/ ?_A7W?\ \K*/^$A^)_\ T*'@/_PK[O\ ^5E=[10!P7_"0_$_
M_H4/ ?\ X5]W_P#*RC_A(?B?_P!"AX#_ /"ON_\ Y65WM% '!?\ "0_$_P#Z
M%#P'_P"%?=__ "LH_P"$A^)__0H> _\ PK[O_P"5E=[10!P7_"0_$_\ Z%#P
M'_X5]W_\K*/^$A^)_P#T*'@/_P *^[_^5E=[10!P7_"0_$__ *%#P'_X5]W_
M /*RC_A(?B?_ -"AX#_\*^[_ /E97>T4 <%_PD/Q/_Z%#P'_ .%?=_\ RLH_
MX2'XG_\ 0H> _P#PK[O_ .5E=[10!P7_  D/Q/\ ^A0\!_\ A7W?_P K*/\
MA(?B?_T*'@/_ ,*^[_\ E97>T4 <%_PD/Q/_ .A0\!_^%?=__*RC_A(?B?\
M]"AX#_\ "ON__E97>T4 <%_PD/Q/_P"A0\!_^%?=_P#RLH_X2'XG_P#0H> _
M_"ON_P#Y65WM% '!?\)#\3_^A0\!_P#A7W?_ ,K*/^$A^)__ $*'@/\ \*^[
M_P#E97>T4 <%_P )#\3_ /H4/ ?_ (5]W_\ *RC_ (2'XG_]"AX#_P#"ON__
M )65WM% '!?\)#\3_P#H4/ ?_A7W?_RLH_X2'XG_ /0H> __  K[O_Y65WM%
M '!?\)#\3_\ H4/ ?_A7W?\ \K*/^$A^)_\ T*'@/_PK[O\ ^5E=[10!P7_"
M0_$__H4/ ?\ X5]W_P#*RC_A(?B?_P!"AX#_ /"ON_\ Y65WM% '!?\ "0_$
M_P#Z%#P'_P"%?=__ "LH_P"$A^)__0H> _\ PK[O_P"5E=[10!P7_"0_$_\
MZ%#P'_X5]W_\K*/AOX9\3_\ "S_$/B3Q)8Z#IG]IZ7IVFV]OINIRW_\ Q[2W
8TC.[26\&W/VI0  ?N'FN]HH **** /_9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<FILENAME>R47.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664427568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Nov. 30, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="nump">$ 128,752<span></span>
</td>
<td class="nump">$ 128,752<span></span>
</td>
<td class="nump">$ 128,504<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AmortizationOfIntangibleAssets', window );">Amortization of Intangible Assets, Total</a></td>
<td class="nump">3,500<span></span>
</td>
<td class="nump">3,200<span></span>
</td>
<td class="nump">500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone', window );">Asset Acquisition, Contingent Consideration Arrangement Upon Completion of Milestone</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod', window );">Asset Acquisitions, Contingent Consideration, Liability, Milestone Period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">24 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_AssetAcquisitionsContingentConsiderationLiability', window );">Asset Acquisitions, Contingent Consideration, Liability</a></td>
<td class="nump">$ 1,000<span></span>
</td>
<td class="nump">4,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 99,600<span></span>
</td>
<td class="nump">$ 99,836<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationWorkingCapitalAdjustment', window );">Business Combination, Working Capital Adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Finite-lived Intangible Assets Acquired</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 8,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For contingent consideration arrangements recognized in connection with an asset acquisition, this element represents an estimate of the consideration which may be paid upon completion of certain milestones.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_AssetAcquisitionsContingentConsiderationLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in an asset acquisition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_AssetAcquisitionsContingentConsiderationLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The milestone period of liability recognized arising from contingent consideration in an asset acquisition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessCombinationWorkingCapitalAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of purchase price adjustment based on the working capital (current assets minus current liabilities) of the acquired entity which reduces the purchase price if the closing date working capital of the acquired entity is below an agreed amount.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_BusinessCombinationWorkingCapitalAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AmortizationOfIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=6388964&amp;loc=d3e16225-109274<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AmortizationOfIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinitelivedIntangibleAssetsAcquired1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinitelivedIntangibleAssetsAcquired1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=77989000&amp;loc=SL49117168-202975<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>17
<FILENAME>R43.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6814917808">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<span></span>
</td>
<td class="nump">$ 51,778<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic - weighted-average shares outstanding: (in shares)</a></td>
<td class="nump">26,866,985<span></span>
</td>
<td class="nump">26,982,614<span></span>
</td>
<td class="nump">26,647,610<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements', window );">Employee stock options and other (in shares)</a></td>
<td class="nump">182,438<span></span>
</td>
<td class="nump">296,202<span></span>
</td>
<td class="nump">197,461<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted - weighted-average shares outstanding: (in shares)</a></td>
<td class="nump">27,049,423<span></span>
</td>
<td class="nump">27,278,816<span></span>
</td>
<td class="nump">26,845,071<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 2.37<span></span>
</td>
<td class="nump">$ 2.84<span></span>
</td>
<td class="nump">$ 1.94<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 2.35<span></span>
</td>
<td class="nump">$ 2.81<span></span>
</td>
<td class="nump">$ 1.93<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1337-109256<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=117327953&amp;loc=d3e4984-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1252-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=SL5780133-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=117327953&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1252-109256<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1337-109256<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28A<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1500-109256<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1448-109256<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>18
<FILENAME>R60.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820630560">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">$ 10,781<span></span>
</td>
<td class="nump">$ 10,928<span></span>
</td>
<td class="nump">$ 8,558<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember', window );">Cost of Sales [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">2,056<span></span>
</td>
<td class="nump">1,543<span></span>
</td>
<td class="nump">970<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember', window );">Selling and Marketing Expense [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">2,632<span></span>
</td>
<td class="nump">1,942<span></span>
</td>
<td class="nump">1,429<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember', window );">Research and Development Expense [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">1,851<span></span>
</td>
<td class="nump">1,517<span></span>
</td>
<td class="nump">1,091<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember', window );">General and Administrative Expense [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">4,242<span></span>
</td>
<td class="nump">5,926<span></span>
</td>
<td class="nump">5,068<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=prlb_StockOptionsRestrictedStockAndOtherMember', window );">Stock Options, Restricted Stock, and Other [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">9,591<span></span>
</td>
<td class="nump">10,113<span></span>
</td>
<td class="nump">7,954<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=prlb_ESPPMember', window );">ESPP [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">$ 1,190<span></span>
</td>
<td class="nump">$ 815<span></span>
</td>
<td class="nump">$ 604<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5047-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -URI http://asc.fasb.org/extlink&amp;oid=115993241&amp;loc=d3e301413-122809<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=prlb_StockOptionsRestrictedStockAndOtherMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=prlb_StockOptionsRestrictedStockAndOtherMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=prlb_ESPPMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=prlb_ESPPMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>19
<FILENAME>R9.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6649435152">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerTextBlock', window );">Revenue from Contract with Customer [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">3</em> &#8211; Revenue</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#160;The Company&#160;accounts for revenue in accordance with ASC <em style="font-weight: inherit; font-style: normal;">606,</em> which the Company&#160;adopted on <em style="font-weight: inherit; font-style: normal;"> January 1, 2018, </em>using the modified retrospective method. Results for reporting periods beginning after <em style="font-weight: inherit; font-style: normal;"> January 1, 2018 </em>are presented under&#160;ASC <em style="font-weight: inherit; font-style: normal;">606,</em> while prior period amounts are <em style="font-weight: inherit; font-style: normal;">not</em> adjusted and continue to be reported in accordance with the Company&#8217;s historic accounting under ASC <em style="font-weight: inherit; font-style: normal;">605.</em> The Company recorded a net increase of $1.5 million&#160;to its retained earnings balance on <em style="font-weight: inherit; font-style: normal;"> January 1, 2018 </em>due to the cumulative impact of adopting&#160;ASC <em style="font-weight: inherit; font-style: normal;">606.</em> The impact of adopting&#160;ASC <em style="font-weight: inherit; font-style: normal;">606</em> was to increase revenue by&#160;$0.3 million and increase cost of revenue&#160;by&#160;$0.2 million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018, </em>and to&#160;increase accounts receivable by $2.9 million and decrease&#160;inventory by $1.3 million&#160;as of&#160;<em style="font-weight: inherit; font-style: normal;"> December 31, 2018, </em>which includes the transition adjustment of $1.5 million noted above.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC <em style="font-weight: inherit; font-style: normal;">606.</em> The majority of the Company&#8217;s CNC machining, <em style="font-weight: inherit; font-style: normal;">3D</em> printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#8217;s injection molding contracts have multiple performance obligations including <em style="font-weight: inherit; font-style: normal;">one</em> obligation to produce the mold and a <em style="font-weight: inherit; font-style: normal;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company manufactures parts that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by geographic region for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">263,086</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70,154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">15,718</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14,172</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by product line for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em>&#160;and <em style="font-weight: inherit; font-style: normal;">2017</em> was as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Injection Molding</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,415</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,523</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">194,432</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">CNC Machining</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">155,473</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">153,521</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">103,739</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">3D Printing</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,342</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">43,329</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Sheet Metal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,000</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,998</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,767</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,488</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,212</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,223</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#160;generally expenses sales commissions when incurred because the amortization period would have been <em style="font-weight: inherit; font-style: normal;">one</em> year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of <em style="font-weight: inherit; font-style: normal;">one</em> year or less is <em style="font-weight: inherit; font-style: normal;">not</em> material.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -URI http://asc.fasb.org/topic&amp;trid=49130388<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>20
<FILENAME>R64.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6668411232">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Restricted Stock Options (Details) - Restricted Stock [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Restricted stock (in shares)</a></td>
<td class="nump">323,921<span></span>
</td>
<td class="nump">334,831<span></span>
</td>
<td class="nump">215,105<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 79.85<span></span>
</td>
<td class="nump">$ 63.29<span></span>
</td>
<td class="nump">$ 62.78<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares)</a></td>
<td class="nump">115,471<span></span>
</td>
<td class="nump">106,855<span></span>
</td>
<td class="nump">210,744<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 106.35<span></span>
</td>
<td class="nump">$ 115.41<span></span>
</td>
<td class="nump">$ 63.70<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares)</a></td>
<td class="num">(92,597)<span></span>
</td>
<td class="num">(86,191)<span></span>
</td>
<td class="num">(60,102)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 77.25<span></span>
</td>
<td class="nump">$ 63.64<span></span>
</td>
<td class="nump">$ 63.60<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares)</a></td>
<td class="num">(31,822)<span></span>
</td>
<td class="num">(31,574)<span></span>
</td>
<td class="num">(30,916)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 87.58<span></span>
</td>
<td class="nump">$ 68.67<span></span>
</td>
<td class="nump">$ 61.99<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Restricted stock (in shares)</a></td>
<td class="nump">314,973<span></span>
</td>
<td class="nump">323,921<span></span>
</td>
<td class="nump">334,831<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 89.55<span></span>
</td>
<td class="nump">$ 79.85<span></span>
</td>
<td class="nump">$ 63.29<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6826676272">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Document And Entity Information - USD ($)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Feb. 14, 2020</div></th>
<th class="th"><div>Jun. 30, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentInformationLineItems', window );"><strong>Document Information [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0001443669<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">Proto Labs Inc<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--12-31<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">FY<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2019<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-K<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentAnnualReport', window );">Document Annual Report</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Dec. 31,  2019<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-35435<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">MN<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">41-1939628<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">5540 Pioneer Creek Drive<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Maple Plain<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">MN<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">55359<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">763<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">479-3680<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock, Par Value $0.001 Per Share<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">PRLB<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NYSE<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityWellKnownSeasonedIssuer', window );">Entity Well-known Seasoned Issuer</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityVoluntaryFilers', window );">Entity Voluntary Filers</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Large Accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityPublicFloat', window );">Entity Public Float</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,100,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,787,910<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CurrentFiscalYearEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>End date of current fiscal year in the format --MM-DD.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CurrentFiscalYearEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gMonthDayItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentAnnualReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as an annual report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 20-F, 40-F<br> -Number 240<br> -Section 15<br> -Subsection d-1<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentAnnualReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalPeriodFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalPeriodFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fiscalPeriodItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalYearFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This is focus fiscal year of the document report in CCYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalYearFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentInformationLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentInformationLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. The format of the date is CCYY-MM-DD.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentTransitionReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as a transition report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-1-<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentTransitionReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCurrentReportingStatus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFilerCategory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFilerCategory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:filerCategoryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityInteractiveDataCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-T<br> -Number 232<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityInteractiveDataCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityPublicFloat">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityPublicFloat</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityShellCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityShellCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntitySmallBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicates that the company is a Smaller Reporting Company (SRC).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntitySmallBusiness</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityVoluntaryFilers">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityVoluntaryFilers</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityWellKnownSeasonedIssuer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityWellKnownSeasonedIssuer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>22
<FILENAME>R68.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6614395904">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 14 - Leases - Balance Sheet Information (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">$ 11,425<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Current operating lease liabilities</a></td>
<td class="nump">3,340<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Long-term operating lease liabilities</a></td>
<td class="nump">8,565<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Total operating lease liabilities</a></td>
<td class="nump">$ 11,905<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>23
<FILENAME>R5.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6833307856">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Shareholders' Equity - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><div>AOCI Attributable to Parent [Member]</div></th>
<th class="th"><div>Total</div></th>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2016</a></td>
<td class="nump">26,504,868<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2016</a></td>
<td class="nump">$ 26<span></span>
</td>
<td class="nump">$ 213,857<span></span>
</td>
<td class="nump">$ 176,703<span></span>
</td>
<td class="num">$ (10,753)<span></span>
</td>
<td class="nump">$ 379,833<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">283,449<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 1<span></span>
</td>
<td class="nump">8,603<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,604<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesAcquisitions', window );">Common shares issued for RAPID acquisition (in shares)</a></td>
<td class="nump">118,140<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueAcquisitions', window );">Common shares issued for RAPID acquisition</a></td>
<td class="nump">$ 1<span></span>
</td>
<td class="nump">11,335<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">11,336<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(77,806)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="num">$ (1)<span></span>
</td>
<td class="num">(628)<span></span>
</td>
<td class="num">(3,784)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(4,413)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">51,778<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">51,778<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other Comprehensive (Loss) Income, net of tax</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">57,297<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">283,449<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 1<span></span>
</td>
<td class="nump">8,603<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,604<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(77,806)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="num">$ (1)<span></span>
</td>
<td class="num">(628)<span></span>
</td>
<td class="num">(3,784)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(4,413)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">51,778<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">51,778<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2017</a></td>
<td class="nump">26,828,651<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2017</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">241,725<span></span>
</td>
<td class="nump">224,697<span></span>
</td>
<td class="num">(5,234)<span></span>
</td>
<td class="nump">461,215<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">260,694<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">6,791<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">6,791<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">10,928<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,928<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(104,598)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(942)<span></span>
</td>
<td class="num">(11,287)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(12,229)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">76,588<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">76,588<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other Comprehensive (Loss) Income, net of tax</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(3,258)<span></span>
</td>
<td class="num">(3,258)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">73,330<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">260,694<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">6,791<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">6,791<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">10,928<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,928<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(104,598)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(942)<span></span>
</td>
<td class="num">(11,287)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(12,229)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">76,588<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">$ 76,588<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2018</a></td>
<td class="nump">26,984,747<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,984,747<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2018</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">258,502<span></span>
</td>
<td class="nump">291,460<span></span>
</td>
<td class="num">(8,492)<span></span>
</td>
<td class="nump">$ 541,497<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other Comprehensive (Loss) Income, net of tax</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Revenue recognition transition adjustment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,462<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,462<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">128,174<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">1,904<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,904<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">10,781<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,781<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(326,462)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(3,128)<span></span>
</td>
<td class="num">(30,393)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(33,521)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">63,655<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">63,655<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,474<span></span>
</td>
<td class="nump">1,474<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">65,129<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (in shares)</a></td>
<td class="nump">128,174<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">1,904<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,904<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">10,781<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,781<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of Common Stock (in shares)</a></td>
<td class="num">(326,462)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of Common Stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(3,128)<span></span>
</td>
<td class="num">(30,393)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(33,521)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">63,655<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">$ 63,655<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2019</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,786,459<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">$ 268,059<span></span>
</td>
<td class="nump">$ 324,722<span></span>
</td>
<td class="num">$ (7,018)<span></span>
</td>
<td class="nump">$ 585,790<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=118258462&amp;loc=d3e11149-113907<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5047-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=118258462&amp;loc=d3e11178-113907<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116855982&amp;loc=d3e4534-113899<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=d3e557-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) to equity or (increase) decrease to net assets, resulting from the cumulative effect adjustment of a new accounting principle applied in the period of adoption.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669646-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -Subparagraph (b,c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesAcquisitions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of stock issued during the period pursuant to acquisitions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesAcquisitions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueAcquisitions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued pursuant to acquisitions during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueAcquisitions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued as a result of the exercise of stock options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares that have been repurchased and retired during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=27010918&amp;loc=d3e74512-122707<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>24
<FILENAME>R22.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820421456">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Tax Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">16</em> &#8211; Income Taxes</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> the Company recorded an income tax provision of $17.5&#160;million, $15.1 million and $22.7 million, respectively. The effective income tax rate for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was 21.6&#160;percent, 16.4 percent and 30.4 percent, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate increased by 5.2% for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31,&#160;</em><em style="font-weight: inherit; font-style: normal;">2019</em> when compared&#160;to <em style="font-weight: inherit; font-style: normal;">2018</em> primarily due to a decrease in tax benefits from the vesting of restricted stock and exercise of stock options, an increase in the state tax provision, and an increase to valuation allowances for unrealizable deferred tax assets.&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#8220;Act&#8221;)&#160;was enacted on <em style="font-weight: inherit; font-style: normal;"> December 22, 2017. </em>The Act reduced the&#160;U.S. federal corporate tax rate from <em style="font-weight: inherit; font-style: normal;">35%</em> to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. <em style="font-weight: inherit; font-style: normal;">No</em> additional income taxes have been provided for any remaining undistributed foreign earnings <em style="font-weight: inherit; font-style: normal;">not</em> subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#160;</p>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td style="width: 17px;">&#160;</td>
       <td style="width: 209px;">&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,841</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">81,893</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">69,929</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,762</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,506</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">81,193</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">91,655</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">74,435</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of the provision for income taxes for the following periods are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,991</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(782</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,808</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,882</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,078</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,367</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,544</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,810</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,215</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,121</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,325</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">865</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">269</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">538</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">193</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(809</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(430</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1,918</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">528</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,127</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,538</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,067</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">22,657</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">State tax (net of federal benefit)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Share based compensation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation allowance against deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Research and development credit</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign rate differential</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic manufacturing deduction</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Miscellaneous</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Transition tax</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revaluation of deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(5.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21.6</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">30.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of deferred tax assets and liabilities are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax assets:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Accrued expenses</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,362</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">931</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,337</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Warrants and stock options</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,325</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,908</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,171</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">748</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Inventories</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">169</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,765</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">666</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net operating loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,513</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,605</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Less valuation allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(8,248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,900</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,394</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,112</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Depreciation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(26,750</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(21,788</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,590</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,486</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(3,337</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(35,677</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(26,283</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(20,162</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has recorded <em style="font-weight: inherit; font-style: normal;">no</em> U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019.</em> Such amounts are intended to be reinvested outside of the United States indefinitely. It is <em style="font-weight: inherit; font-style: normal;">not</em> practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $9.3&#160;million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the Company had estimated net operating loss carry forwards of $6.5&#160;million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to <span style="-sec-ix-hidden:c56003403">ten</span> years. The remaining Japan net operating losses begin to expire at various dates between <em style="font-weight: inherit; font-style: normal;">2020</em>&#160;and <em style="font-weight: inherit; font-style: normal;">2026.</em> The Company&#8217;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses <em style="font-weight: inherit; font-style: normal;"> may </em>be carried forward without any time limitations but are limited to <em style="font-weight: inherit; font-style: normal;">&#8364;1</em> million, plus 60 percent&#160;of taxable income exceeding <em style="font-weight: inherit; font-style: normal;">&#8364;1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-<em style="font-weight: inherit; font-style: normal;">not</em> that a portion of the deferred tax assets will <em style="font-weight: inherit; font-style: normal;">not</em> be realized. The Company's valuation allowances of $8.2&#160;million and $6.9 million at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in <em style="font-weight: inherit; font-style: normal;">2019.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is <em style="font-weight: inherit; font-style: normal;">no</em> longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before <em style="font-weight: inherit; font-style: normal;">2016.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has liabilities related to unrecognized tax benefits totaling $4.6&#160;million and $4.1 million at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, that if recognized would result in a reduction of the Company&#8217;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate. Interest and penalties were immaterial for each of the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,233</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of current year</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">592</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">593</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of prior years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">309</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Decrease related to expiration of statutes of limitations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(90</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,039</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at period end</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,598</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -URI http://asc.fasb.org/topic&amp;trid=2144680<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>25
<FILENAME>R26.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6606783728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConsolidationPolicyTextBlock', window );">Consolidation, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#8220;Organization and business&#8221; above. All intercompany accounts and transactions have been eliminated in consolidation.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock', window );">Comprehensive Income, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#8217; equity.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UseOfEstimates', window );">Use of Estimates, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsPolicyTextBlock', window );">Cash and Cash Equivalents, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font-weight: inherit; font-style: normal;"> may </em>exceed federally insured limits. The Company has <em style="font-weight: inherit; font-style: normal;">not</em> experienced any losses on such accounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MarketableSecuritiesPolicy', window );">Marketable Securities, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#8217;s maturity date. Securities with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. The Company reviews impairments associated with its marketable securities in accordance with the measurement guidance provided by ASC <em style="font-weight: inherit; font-style: normal;">320,</em> <i>Investments &#8211; Debt and Equity Securities,</i> when determining the classification of impairment as &#8220;temporary&#8221; or &#8220;other-than-temporary.&#8221; The factors used to differentiate between temporary and other-than-temporary include assessment of the quality of the security, credit ratings actions and management&#8217;s intent to hold the security to maturity as well as other factors.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TradeAndOtherAccountsReceivablePolicy', window );">Accounts Receivable [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font-weight: inherit; font-style: normal;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryPolicyTextBlock', window );">Inventory, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average cost method, which approximates <em style="font-weight: inherit; font-style: normal;">first</em>-in, <em style="font-weight: inherit; font-style: normal;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock', window );">Property, Plant and Equipment, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#8217;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets <em style="font-weight: inherit; font-style: normal;">not</em> in service are <em style="font-weight: inherit; font-style: normal;">not</em> depreciated until the asset is put into use.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#160;<em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, $32.7 million and $16.6 million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>were <em style="font-weight: inherit; font-style: normal;">$16.1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy', window );">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font-weight: inherit; font-style: normal;">350,</em> <i>Intangibles&#8212;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font-weight: inherit; font-style: normal;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font-weight: inherit; font-style: normal;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy', window );">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c56002302">two</span> to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#8217;s carrying value over its fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock', window );">Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font-weight: inherit; font-style: normal;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueRecognitionPolicyTextBlock', window );">Revenue [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2018, </em>the Company adopted&#160;ASC <em style="font-weight: inherit; font-style: normal;">606,</em> <i>Revenue from Contracts with Customers,</i>&#160;using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Prior to <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company recognized revenue when it was realized or realizable and earned when all of the following criteria were met: persuasive evidence of an arrangement existed, delivery had occurred or services had been rendered, the price to the buyer was fixed or determinable and collectability was reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in the Company&#8217;s Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal product lines.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeLeasesPolicyTextBlock', window );">Lessee, Leases [Policy Text Block]</a></td>
<td class="text"><p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2019, </em>the Company adopted ASC <em style="font-weight: inherit; font-style: normal;">842,</em> <i>Leases</i>, which introduced the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"/></div></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxPolicyTextBlock', window );">Income Tax, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font-weight: inherit; font-style: normal;">740,</em><i> Income Taxes</i> (ASC <em style="font-weight: inherit; font-style: normal;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;<em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recognized.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font-weight: inherit; font-style: normal;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#8217;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font-weight: inherit; font-style: normal;">not</em> criterion. Additionally, ASC <em style="font-weight: inherit; font-style: normal;">740</em> provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CompensationRelatedCostsPolicyTextBlock', window );">Compensation Related Costs, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718,</em><i> Compensation&#8212;Stock Compensation</i> (ASC <em style="font-weight: inherit; font-style: normal;">718</em>). Under the fair value recognition provisions of ASC <em style="font-weight: inherit; font-style: normal;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#8217;s awards are <em style="font-weight: inherit; font-style: normal;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdvertisingCostsPolicyTextBlock', window );">Advertising Cost [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $13.0&#160;million, $11.8 million and $10.7 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em>&#160;and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpensePolicy', window );">Research and Development Expense, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC <em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $32.7&#160;million, $28.7 million and $23.6 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock', window );">Foreign Currency Transactions and Translations Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#8217; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationsPolicy', window );">Business Combinations Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Business combinations</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for business combinations in accordance with ASC <em style="font-weight: inherit; font-style: normal;">805,</em> <i>Business Combinations </i>(ASC <em style="font-weight: inherit; font-style: normal;">805</em>). On <em style="font-weight: inherit; font-style: normal;"> November 30, 2017, </em>the Company acquired&#160;RAPID Manufacturing Group, LLC (RAPID) for $122.0 million, consisting of $110.6 million in cash and $11.3 million in the Company&#8217;s common stock.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"/></div></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">New Accounting Pronouncements, Policy [Policy Text Block]</a></td>
<td class="text"><p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently adopted accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">04,</em> <i>Intangibles &#8211; Goodwill and Other, </i>which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had <em style="font-weight: inherit; font-style: normal;">no</em> material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">02,</em>&#160;<i>Leases&#160;</i>(ASC <em style="font-weight: inherit; font-style: normal;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font-weight: inherit; font-style: normal;">2018</em>-<em style="font-weight: inherit; font-style: normal;">11,</em>&#160;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font-weight: inherit; font-style: normal;">840,</em>&#160;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font-weight: inherit; font-style: normal;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#8217;s operating lease assets and liabilities on <em style="font-weight: inherit; font-style: normal;"> January 1, 2019 </em>of $13.1 million.</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2014</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Revenue from Contracts with Customers </i>(ASC <em style="font-weight: inherit; font-style: normal;">606</em>). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. The Company adopted the new revenue standard using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#160;manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. The transition adjustment recorded was an increase of $1.5 million&#160;to the Company's retained earnings balance&#160;as of&#160;<em style="font-weight: inherit; font-style: normal;"> January 1, 2018.</em></p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted ASU <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Compensation &#8211; Stock Compensation</i>, which is intended to provide clarity and reduce diversity in practice&#160;as well as&#160;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently issued accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> December 2019, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2019</em>-<em style="font-weight: inherit; font-style: normal;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font-weight: inherit; font-style: normal;">not</em> expect the impact to be material.</p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> June 2016, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">13,</em> <i>Financial Instruments &#8211; Credit Losses, </i>which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2019 </em>and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdvertisingCostsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for advertising cost.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingCostsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 05<br> -Paragraph 4<br> -Subparagraph (a)-(d)<br> -URI http://asc.fasb.org/extlink&amp;oid=6909625&amp;loc=d3e227-128457<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=98513485&amp;loc=d3e4273-108586<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationRelatedCostsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for salaries, bonuses, incentive awards, postretirement and postemployment benefits granted to employees, including equity-based arrangements; discloses methodologies for measurement, and the bases for recognizing related assets and liabilities and recognizing and reporting compensation expense.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b),(f(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18726-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationRelatedCostsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for comprehensive income.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomePolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConsolidationPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.3A-02)<br> -URI http://asc.fasb.org/extlink&amp;oid=116822174&amp;loc=d3e355033-122828<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.3A-03)<br> -URI http://asc.fasb.org/extlink&amp;oid=116822174&amp;loc=d3e355100-122828<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=d3e5614-111684<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConsolidationPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6450520&amp;loc=d3e32583-110901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6450222&amp;loc=d3e30840-110895<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=108376223&amp;loc=d3e13816-109267<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes goodwill and intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 05<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109226317&amp;loc=d3e202-110218<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.CC)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011434&amp;loc=d3e125687-122742<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32847-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 740<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6491622&amp;loc=d3e9504-115650<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32809-109319<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116657188&amp;loc=SL116659661-227067<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32840-109319<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=d3e32247-109318<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=d3e32280-109318<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 30<br> -Section 05<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=65884525&amp;loc=d3e40913-109327<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4556-108314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116846552&amp;loc=d3e543-108305<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4492-108314<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeLeasesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for leasing arrangement entered into by lessee.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918666-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeLeasesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MarketableSecuritiesPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for investment classified as marketable security.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 320<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=75019621&amp;loc=d3e62652-112803<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MarketableSecuritiesPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for long-lived, physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, basis of assets, depreciation and depletion methods used, including composite deprecation, estimated useful lives, capitalization policy, accounting treatment for costs incurred for repairs and maintenance, capitalized interest and the method it is calculated, disposals and impairments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.13(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchAndDevelopmentExpensePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for costs it has incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchAndDevelopmentExpensePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRecognitionPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18823-107790<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18823-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRecognitionPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TradeAndOtherAccountsReceivablePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=d3e4975-111524<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=SL6953423-111524<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=d3e5033-111524<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=d3e5212-111524<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=d3e5093-111524<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=84159169&amp;loc=d3e10133-111534<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TradeAndOtherAccountsReceivablePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UseOfEstimates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6191-108592<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6161-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6143-108592<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6061-108592<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6132-108592<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UseOfEstimates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>26
<FILENAME>R10.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820408880">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Net Income Per Common Share<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareTextBlock', window );">Earnings Per Share [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">4</em> &#8211; Net Income Per Common Share</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Basic net income per share is computed based on the weighted average number of common shares outstanding. Diluted net income per share is computed based on the weighted average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had the potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net Income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63,655</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">76,588</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">51,778</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,866,985</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,982,614</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,647,610</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">182,438</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296,202</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">197,461</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,049,423</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,278,816</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,845,071</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share attributable to common shareholders:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.37</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.84</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1.94</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.93</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for earnings per share.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -URI http://asc.fasb.org/topic&amp;trid=2144383<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>27
<FILENAME>R14.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6763873792">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Marketable Securities<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentTextBlock', window );">Investment [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">8</em> &#8211; Marketable Securities</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#8217;s ability and intent to hold these securities to maturity. Information regarding the Company&#8217;s short-term and long-term marketable securities as of <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018</em> is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,268</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,944</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(12</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">27,012</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,204</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,210</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Commercial paper</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,491</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,491</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,484</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,506</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">112</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(22</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,487</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,843</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(88</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,755</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">31,769</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(96</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">31,673</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,509</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(33</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,477</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,208</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,183</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">70,329</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(242</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">70,088</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Fair values for the U.S. government agency securities and corporate debt securities are primarily determined based on quoted market prices (Level <em style="font-weight: inherit; font-style: normal;">1</em>). Fair values for the U.S. municipal securities, commercial paper and certificates of deposit are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font-weight: inherit; font-style: normal;">2</em>).</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company tests for other than temporary losses on a quarterly basis and has considered the unrealized losses indicated above to be temporary in nature. The investment policy adopted by the Company dictates that only investments in quality, highly rated debt securities are permitted. Those unrealized losses displayed above are the result of macroeconomic factors and are indicative of neither the quality of the underlying security nor the issuer&#8217;s ability to pay its debt. The Company intends, and has the ability, to hold the investments to maturity and recover the full principal.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Classification of marketable securities as current or non-current is based upon the security&#8217;s maturity date as of the date of these financial statements.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. Actual maturities <em style="font-weight: inherit; font-style: normal;"> may </em>differ from contractual maturities because the issuers of the securities <em style="font-weight: inherit; font-style: normal;"> may </em>have the right to prepay obligations without prepayment penalties.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35,437</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,960</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for investment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 321<br> -URI http://asc.fasb.org/topic&amp;trid=75115024<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -URI http://asc.fasb.org/topic&amp;trid=2196928<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 325<br> -URI http://asc.fasb.org/topic&amp;trid=2197064<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -URI http://asc.fasb.org/topic&amp;trid=2196965<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>28
<FILENAME>R18.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820195248">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Employee Benefit Plans<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock', window );">Pension and Other Postretirement Benefits Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">12</em> &#8211; Employee Benefit Plans</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company maintains a <em style="font-weight: inherit; font-style: normal;">401</em>(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over 20 hours/week) employee becomes a participant after completing <span style="-sec-ix-hidden:c56002857">three</span> months of employment. Employees <em style="font-weight: inherit; font-style: normal;"> may </em>elect to contribute up to 50 percent of regular gross pay, subject to federal law limits on the dollar amount that participants <em style="font-weight: inherit; font-style: normal;"> may </em>contribute to the plan, each calendar year. The Company matches part of the employee contributions and <em style="font-weight: inherit; font-style: normal;"> may </em>make a discretionary contribution to the plan. Total employer contributions were approximately $3.1&#160;million, $2.7 million and $1.9 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $0.3&#160;million in each of the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for pension and other postretirement benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -URI http://asc.fasb.org/topic&amp;trid=2235017<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>29
<FILENAME>R37.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6670793008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Accumulated Other Comprehensive Loss (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock', window );">Comprehensive Income (Loss) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign currency translation adjustments</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(8,492</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,234</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(10,753</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,258</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,519</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(3,258</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,519</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(7,018</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,492</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(5,234</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of components of comprehensive income (loss). Includes, but is not limited to, foreign currency translation adjustments, foreign currency transactions  designated as economic hedges of a net investment in foreign entity, gain (loss) and prior service cost (credit) for pension plans and other postretirement benefit plans.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=d3e526-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>30
<FILENAME>R33.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6626374352">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Property and Equipment (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentTextBlock', window );">Property, Plant and Equipment [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Land</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,098</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,566</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Buildings and improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75,843</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">72,819</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Machinery and equipment</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">208,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,416</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Computer hardware and software</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,953</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">22,323</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Leasehold improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,341</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,330</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Construction in progress</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54,313</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">25,279</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">385,502</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,733</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Accumulated depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(121,790</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(95,732</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Property and equipment, net</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">228,001</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>31
<FILENAME>R52.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6750256864">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">$ 48,397<span></span>
</td>
<td class="nump">$ 70,329<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">112<span></span>
</td>
<td class="nump">1<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="num">(22)<span></span>
</td>
<td class="num">(242)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">48,487<span></span>
</td>
<td class="nump">70,088<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember', window );">Bank Time Deposits [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">1,484<span></span>
</td>
<td class="nump">4,208<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">22<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(25)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">1,506<span></span>
</td>
<td class="nump">4,183<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">US Government Agencies Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">6,274<span></span>
</td>
<td class="nump">16,843<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">1<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="num">(7)<span></span>
</td>
<td class="num">(88)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">6,268<span></span>
</td>
<td class="nump">16,755<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">26,944<span></span>
</td>
<td class="nump">31,769<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">80<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="num">(12)<span></span>
</td>
<td class="num">(96)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">27,012<span></span>
</td>
<td class="nump">31,673<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember', window );">US States and Political Subdivisions Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">10,204<span></span>
</td>
<td class="nump">17,509<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">9<span></span>
</td>
<td class="nump">1<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="num">(3)<span></span>
</td>
<td class="num">(33)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">10,210<span></span>
</td>
<td class="nump">$ 17,477<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember', window );">Commercial Paper, Not Included with Cash and Cash Equivalents [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">3,491<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">$ 3,491<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118954083&amp;loc=d3e26610-111562<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrecognized gain on investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrealized loss on investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>32
<FILENAME>R56.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6684880288">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 10 - Inventory - Inventory (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryRawMaterials', window );">Raw materials</a></td>
<td class="nump">$ 9,818<span></span>
</td>
<td class="nump">$ 9,560<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryWorkInProcess', window );">Work in process</a></td>
<td class="nump">501<span></span>
</td>
<td class="nump">792<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryGross', window );">Total inventory</a></td>
<td class="nump">10,319<span></span>
</td>
<td class="nump">10,352<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryValuationReserves', window );">Allowance for obsolescence</a></td>
<td class="num">(244)<span></span>
</td>
<td class="num">(265)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventory, net of allowance</a></td>
<td class="nump">$ 10,075<span></span>
</td>
<td class="nump">$ 10,087<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116846819&amp;loc=d3e3927-108312<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryRawMaterials">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before valuation and LIFO reserves of raw materials expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryRawMaterials</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryValuationReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation reserve for inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116846819&amp;loc=d3e3927-108312<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.BB)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09)<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e24092-122690<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryValuationReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryWorkInProcess">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before valuation and LIFO reserves of merchandise or goods in the production process expected to be completed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryWorkInProcess</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R79.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6684638720">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<span></span>
</td>
<td class="nump">$ 344,490<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">458,728<span></span>
</td>
<td class="nump">445,596<span></span>
</td>
<td class="nump">344,490<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">360,205<span></span>
</td>
<td class="nump">350,535<span></span>
</td>
<td class="nump">263,086<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">82,805<span></span>
</td>
<td class="nump">80,889<span></span>
</td>
<td class="nump">70,154<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Japan Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 15,718<span></span>
</td>
<td class="nump">$ 14,172<span></span>
</td>
<td class="nump">$ 11,250<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130545-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130543-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R75.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6764062912">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Current:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentFederalTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">$ 6,991<span></span>
</td>
<td class="num">$ (782)<span></span>
</td>
<td class="nump">$ 17,808<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit', window );">State</a></td>
<td class="nump">2,882<span></span>
</td>
<td class="nump">2,078<span></span>
</td>
<td class="nump">1,367<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentForeignTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">1,544<span></span>
</td>
<td class="nump">1,810<span></span>
</td>
<td class="nump">2,215<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Deferred</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">5,121<span></span>
</td>
<td class="nump">11,325<span></span>
</td>
<td class="nump">865<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="nump">269<span></span>
</td>
<td class="nump">538<span></span>
</td>
<td class="nump">193<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="num">(809)<span></span>
</td>
<td class="num">(430)<span></span>
</td>
<td class="num">(1,918)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Valuation Allowance</a></td>
<td class="nump">1,540<span></span>
</td>
<td class="nump">528<span></span>
</td>
<td class="nump">2,127<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Total</a></td>
<td class="nump">$ 17,538<span></span>
</td>
<td class="nump">$ 15,067<span></span>
</td>
<td class="nump">$ 22,657<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentFederalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current federal tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentFederalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentForeignTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentForeignTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current state and local tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentStateAndLocalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred federal income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred state and local tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109238882&amp;loc=d3e38679-109324<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=d3e32123-109318<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>35
<FILENAME>R81.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6817285952">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">$ 263,712<span></span>
</td>
<td class="nump">$ 228,001<span></span>
</td>
<td class="nump">$ 166,440<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">210,171<span></span>
</td>
<td class="nump">185,979<span></span>
</td>
<td class="nump">125,308<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">45,019<span></span>
</td>
<td class="nump">34,577<span></span>
</td>
<td class="nump">33,691<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Japan Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">$ 8,522<span></span>
</td>
<td class="nump">$ 7,445<span></span>
</td>
<td class="nump">$ 7,441<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R71.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6670901328">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Weighted Average Remaining Lease Term (Years) (Year)</a></td>
<td class="text">4 years 9 months 18 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Weighted Average Discount Rate</a></td>
<td class="nump">2.60%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average discount rate for operating lease calculated at point in time.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>37
<FILENAME>R19.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820304800">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock', window );">Share-based Payment Arrangement [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">13</em> &#8211; Stock-Based Compensation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has <em style="font-weight: inherit; font-style: normal;">two</em> equity incentive plans: the <em style="font-weight: inherit; font-style: normal;">2000</em> Stock Option Plan (<em style="font-weight: inherit; font-style: normal;">2000</em> Plan) and the <em style="font-weight: inherit; font-style: normal;">2012</em> Long-Term Incentive Plan (<em style="font-weight: inherit; font-style: normal;">2012</em> Plan). Upon the adoption of the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan on <em style="font-weight: inherit; font-style: normal;"> February&#160;</em><em style="font-weight: inherit; font-style: normal;">21,</em> <em style="font-weight: inherit; font-style: normal;">2012,</em> all shares that were reserved but <em style="font-weight: inherit; font-style: normal;">not</em> issued under the <em style="font-weight: inherit; font-style: normal;">2000</em> Plan were assumed by the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan. <em style="font-weight: inherit; font-style: normal;">No</em> additional&#160;awards will be issued under the <em style="font-weight: inherit; font-style: normal;">2000</em> Plan. Under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, performance stock, stock units, other stock-based awards and cash incentive awards. Awards under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan have a maximum term of <em style="font-weight: inherit; font-style: normal;">ten</em> years from the date of grant. The compensation committee of the board of directors <em style="font-weight: inherit; font-style: normal;"> may </em>provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements, and the compensation committee will determine whether such measures have been achieved. The per share exercise price of stock options and SARs granted under the <em style="font-weight: inherit; font-style: normal;">2012</em> Plan generally <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be less than the fair market value of a share of our common stock on the date of the grant. Restricted stock is valued at fair market value on the date of grant.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s <em style="font-weight: inherit; font-style: normal;">2012</em> Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#8217;s common stock at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for <span style="-sec-ix-hidden:c56002891">six</span>-month offering periods with a single purchase period, and at the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company&#8217;s common stock on the <em style="font-weight: inherit; font-style: normal;">first</em> trading day of the offering period or on the last trading day of the offering period. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718</em> using the component measurement approach and the Black-Scholes standard option pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Employees purchased 41,615&#160;and 33,562 shares of common stock under the ESPP at an average exercise price of $86.70&#160;and $85.61 during <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>1,168,830&#160;shares remained available for future issuance under the ESPP.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines its stock-based compensation in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718,</em> which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#8217;s best estimates, which involve inherent uncertainties and the application of management&#8217;s judgment. Significant estimates include its expected term and&#160;stock price volatility.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#160;the Company's&#160;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#160;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does <em style="font-weight: inherit; font-style: normal;">not</em> anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of <span style="-sec-ix-hidden:c56002904">zero</span> in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock-based compensation expense for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,591</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,113</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Employee stock purchase plan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,190</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">815</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">604</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,558</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,056</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,543</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">970</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,632</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,942</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,429</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,851</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,517</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,091</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,242</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,926</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,068</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,558</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Stock Options</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.35 - 2.58%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.24 - 2.36%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.68 - 44.68%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted average grant date fair value</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$47.84</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$50.08</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$32.26</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock option activity and the weighted average exercise price for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Options</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Exercise Price</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">569,639</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">60,100</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">69.06</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(187,313</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35.93</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,371</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61.02</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">399,055</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">51.13</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">36,600</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110.59</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(155,765</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">38.92</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">252,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">64.71</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,708</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(16,079</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(13,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.50</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">276,266</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">72.38</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Exercisable at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">152,423</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59.26</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The outstanding options have a term of <em style="font-weight: inherit; font-style: normal;">10</em> years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c56002919">four</span>- or <span style="-sec-ix-hidden:c56002920">five</span>-year period, beginning on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date, subject to the employee&#8217;s continuing service to the Company. For directors, options generally become exercisable in full on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The total intrinsic value of options exercised during the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> was $0.9&#160;million, $13.0 million and $7.0 million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">For options outstanding at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the weighted-average remaining contractual term was 5.5&#160;years and the aggregate intrinsic value was $8.6&#160;million. For options exercisable at <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the weighted-average remaining contractual term was 3.6&#160;years and the aggregate intrinsic value was $6.5&#160;million. Refer to the table below for additional information.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes information about stock options outstanding at <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019:</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="8" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="5" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Outstanding</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Remaining Contractual Life</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Exercisable</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">7.76 to 31.43</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">23,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.98</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25.04</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">23,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25.04</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">31.44 to 66.87</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">125,022</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.42</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">85,656</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">66.88 to 96.20</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">45,255</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70.98</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">33,445</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70.41</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">96.21 to 123.10</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">82,106</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">8.68</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">107.79</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">9,439</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110.36</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> there was $3.6&#160;million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of 2.6&#160;years. The total fair value of options vested was $1.5&#160;million, $1.5 million and $2.8 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Restricted Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font-weight: inherit; font-style: normal;">2012</em> Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c56002949">four</span>- or <span style="-sec-ix-hidden:c56002950">five</span>-year period, beginning on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date, subject to the employee&#8217;s continuing service to the Company. For directors, restrictions generally lapse in full on the <em style="font-weight: inherit; font-style: normal;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes restricted stock activity for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em>&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Restricted</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">215,105</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">62.78</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,744</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.70</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(60,102</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.60</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(30,916</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61.99</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">334,831</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.29</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106,855</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115.41</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(86,191</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.64</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(31,574</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">68.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,921</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79.85</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,471</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(92,597</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(31,822</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87.58</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">314,973</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.55</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>there was $21.1&#160;million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.6&#160;years.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Performance Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c56002958">0</span> percent and 150 percent of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c56002960">three</span>-year performance period depending on the Company&#8217;s performance in the final year of the performance period and the award recipient&#8217;s continued employment.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes performance stock activity for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em>&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Performance</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,707</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,707</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20,006</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.75</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,427</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">52,140</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">76.54</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,434</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">104.99</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(61,816</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">88.06</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,375</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">105.37</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,383</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>there was $0.1&#160;million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 0.1&#160;years.&#160;The decrease in unrecognized stock-based compensation costs related to non-vested performance stock in <em style="font-weight: inherit; font-style: normal;">2019</em> when compared to <em style="font-weight: inherit; font-style: normal;">2018</em> is driven by a decrease in the number of shares expected to vest at the end of future performance periods.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Employee Stock Purchase Plan</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017:</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="7" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.59 - 2.35%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.06 - 2.33%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.97 - 1.48%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">42.63 - 53.57%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">31.50 - 37.36%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">24.49 - 34.51%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI http://asc.fasb.org/topic&amp;trid=2228938<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>38
<FILENAME>R11.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6671554768">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Business Combinations<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationDisclosureTextBlock', window );">Business Combination Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">5</em> &#8211; Business Combinations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font-weight: inherit; font-style: normal;"> November 30, 2017, </em>the Company acquired RAPID for $122.0 million, consisting of $110.6 million in cash (net of cash acquired)&#160;and $11.3 million in the Company&#8217;s common stock. The operations of RAPID are integrated into the operations of the Company.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">RAPID is a New Hampshire-based custom parts supplier specializing in quick-turn sheet metal fabrication and CNC machining. With the acquisition, the Company offers its customers another quick-turn manufacturing service while expanding its CNC machining capabilities.&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC <em style="font-weight: inherit; font-style: normal;">805.</em> The fair value of the consideration paid exceeded the fair value of the assets&#160;acquired and liabilities assumed, which resulted in goodwill of $99.8 million. The goodwill primarily&#160;relates to&#160;synergies resulting from the acquisition&#160;and&#160;is deductible for tax purposes over a 15-year period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The RAPID&#160;amortizable intangible assets&#160;were valued as of the acquisition date and were deemed to have&#160;a weighted-average useful life of&#160;5.5 years. The customer relationships were valued at $7.5 million based on the Multi-Period Excess Earnings Method and are amortized over 6.0 years. The trade names were valued at $1.1 million based on the Relief-from-Royalty Method and are amortized over 2.0 years. The non-competition agreement was valued at $0.1 million based on the Discounted Cash Flow method and will be amortized over 5 years. The allocation of the purchase price to assets acquired and liabilities assumed is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,720</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99,836</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,700</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,855</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">124,111</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,067</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">85</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,152</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,959</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,378</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,755</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110,623</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,336</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total purchase consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,959</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following unaudited pro forma information represents the Company&#8217;s results of operations as if the fiscal <em style="font-weight: inherit; font-style: normal;">2017</em> acquisition of RAPID had occurred at the beginning of fiscal <em style="font-weight: inherit; font-style: normal;">2016.</em> These performance results <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be indicative of the actual results that would have occurred under the ownership and management of the Company.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2016</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">(unaudited)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">386,677</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">336,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">55,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The unaudited pro forma net income for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>excludes&#160;transaction costs of approximately $1.9 million and includes the increase in estimated depreciation expense of approximately $0.9 million and the increase in estimated amortization expense of approximately&#160;$3.0 million. The unaudited pro forma net income for the year ended&#160;<em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2016</em>&#160;includes the impact of new stock options and restricted stock units granted to employees of approximately $0.2 million in connection with the acquisition, an increase in estimated depreciation expense of approximately $0.6 million and the increase in estimated amortization expense of approximately $3.1 million. The pro forma net income for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>and <em style="font-weight: inherit; font-style: normal;">2016</em> include the related tax effects of the adjustments. The pro forma information has been prepared for comparative purposes only and includes certain adjustments, as noted above. The adjustments are estimates and actual amounts <em style="font-weight: inherit; font-style: normal;"> may </em>differ materially from these estimates. They do <em style="font-weight: inherit; font-style: normal;">not</em> reflect the effect of costs or synergies that would have been expected to result from the integration of the RAPID acquisition. The pro forma information does <em style="font-weight: inherit; font-style: normal;">not</em> purport to be indicative of the results of operations that actually would have resulted had the RAPID acquisition occurred on <em style="font-weight: inherit; font-style: normal;"> January 1, 2016. </em>The Company&#8217;s <em style="font-weight: inherit; font-style: normal;">2017</em> Consolidated Statements of Comprehensive Income include $3.6 million of revenue and $0.7 million of net loss related to RAPID. The net loss was primarily driven by $1.1 million of bonus payments to RAPID employees as a result of the acquisition.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -URI http://asc.fasb.org/topic&amp;trid=2303972<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>39
<FILENAME>R15.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6817151872">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Property and Equipment<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock', window );">Property, Plant and Equipment Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">9</em> &#8211; Property and Equipment</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property and equipment consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Land</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,098</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,566</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Buildings and improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75,843</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">72,819</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Machinery and equipment</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">208,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,416</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Computer hardware and software</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,953</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">22,323</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Leasehold improvements</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,341</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,330</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Construction in progress</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54,313</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">25,279</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">385,502</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,733</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Accumulated depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(121,790</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(95,732</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Property and equipment, net</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">228,001</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;Depreciation expense for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was $27.4&#160;million, $23.5 million and $18.0 million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for long-lived, physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, accounting policies and methodology, roll forwards, depreciation, depletion and amortization expense, including composite depreciation, accumulated depreciation, depletion and amortization expense, useful lives and method used, income statement disclosures, assets held for sale and public utility disclosures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -URI http://asc.fasb.org/topic&amp;trid=2155823<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R36.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6665598336">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Leases (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock', window );">Schedule of Operating Lease Assets and Liabilities [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,425</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,340</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Long-term operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,565</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,905</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ScheduleOfLeaseExpenseTableTextBlock', window );">Schedule of Lease Expense [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Three Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">976</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,960</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Variable lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">228</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,039</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,204</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,999</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid for amounts included in the measurement of operating lease liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Operating cash flows from operating leases</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,020</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Lease assets obtained in exchange for new operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,921</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock', window );">Lessee, Operating Lease, Liability, Maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Operating Leases</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b><span style="text-decoration: underline; ">Year Ending December 31,</span></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,034</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,835</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,064</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">498</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">After 2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,613</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total future minimum lease payments</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,678</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Less interest</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(773</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Present value of lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,905</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock', window );">Schedule of Lease Terms and Discount Rates [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.6%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ScheduleOfLeaseExpenseTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of lease expenses incurred.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_ScheduleOfLeaseExpenseTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the weighted average remaining lease terms and discount rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of operating lease assets and liabilities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>41
<FILENAME>R32.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6665219600">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Marketable Securities (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesTextBlock', window );">Debt Securities, Held-to-maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,268</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,944</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(12</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">27,012</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,204</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,210</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">Commercial paper</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,491</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,491</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,484</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,506</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">112</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(22</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,487</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Amortized Cost</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Gains</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Unrealized Losses</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,843</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(88</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,755</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">31,769</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(96</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">31,673</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,509</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(33</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,477</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,208</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,183</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">70,329</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(242</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">70,088</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock', window );">Investments Classified by Contractual Maturity Date [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35,437</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,960</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of information about investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>42
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.19.3.a.u2</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>233</ContextCount>
  <ElementCount>449</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>61</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>7</UnitCount>
  <MyReports>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000 - Document - Document And Entity Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Balance Sheets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets</Role>
      <ShortName>Consolidated Balance Sheets</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Balance Sheets (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Statements of Comprehensive Income</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income</Role>
      <ShortName>Consolidated Statements of Comprehensive Income</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Statements of Shareholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity</Role>
      <ShortName>Consolidated Statements of Shareholders' Equity</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Cash Flows</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows</Role>
      <ShortName>Consolidated Statements of Cash Flows</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Disclosure - Note 1 - Nature of Business</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business</Role>
      <ShortName>Note 1 - Nature of Business</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Disclosure - Note 2 - Summary of Significant Accounting Policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Disclosure - Note 3 - Revenue</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-3-revenue</Role>
      <ShortName>Note 3 - Revenue</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>009 - Disclosure - Note 4 - Net Income Per Common Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share</Role>
      <ShortName>Note 4 - Net Income Per Common Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>010 - Disclosure - Note 5 - Business Combinations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations</Role>
      <ShortName>Note 5 - Business Combinations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>011 - Disclosure - Note 6 - Goodwill and Other Intangible Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>012 - Disclosure - Note 7 - Fair Value Measurements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements</Role>
      <ShortName>Note 7 - Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>013 - Disclosure - Note 8 - Marketable Securities</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities</Role>
      <ShortName>Note 8 - Marketable Securities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>014 - Disclosure - Note 9 - Property and Equipment</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment</Role>
      <ShortName>Note 9 - Property and Equipment</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>015 - Disclosure - Note 10 - Inventory</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-10-inventory</Role>
      <ShortName>Note 10 - Inventory</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>016 - Disclosure - Note 11 - Financing Obligations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations</Role>
      <ShortName>Note 11 - Financing Obligations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>017 - Disclosure - Note 12 - Employee Benefit Plans</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans</Role>
      <ShortName>Note 12 - Employee Benefit Plans</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>018 - Disclosure - Note 13 - Stock-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation</Role>
      <ShortName>Note 13 - Stock-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>019 - Disclosure - Note 14 - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases</Role>
      <ShortName>Note 14 - Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>020 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss</Role>
      <ShortName>Note 15 - Accumulated Other Comprehensive Loss</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>021 - Disclosure - Note 16 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes</Role>
      <ShortName>Note 16 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>022 - Disclosure - Note 17 - Litigation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-17-litigation</Role>
      <ShortName>Note 17 - Litigation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>023 - Disclosure - Note 18 - Segment Reporting</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting</Role>
      <ShortName>Note 18 - Segment Reporting</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>024 - Disclosure - Note 19 - Subsequent Events</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events</Role>
      <ShortName>Note 19 - Subsequent Events</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>25</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>025 - Disclosure - Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies</Role>
      <ShortName>Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>026 - Disclosure - Note 3 - Revenue (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables</Role>
      <ShortName>Note 3 - Revenue (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-3-revenue</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>027 - Disclosure - Note 4 - Net Income Per Common Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables</Role>
      <ShortName>Note 4 - Net Income Per Common Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>028 - Disclosure - Note 5 - Business Combinations (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables</Role>
      <ShortName>Note 5 - Business Combinations (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>029 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets</ParentRole>
      <Position>30</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>030 - Disclosure - Note 7 - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables</Role>
      <ShortName>Note 7 - Fair Value Measurements (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>031 - Disclosure - Note 8 - Marketable Securities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables</Role>
      <ShortName>Note 8 - Marketable Securities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>032 - Disclosure - Note 9 - Property and Equipment (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables</Role>
      <ShortName>Note 9 - Property and Equipment (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>033 - Disclosure - Note 10 - Inventory (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables</Role>
      <ShortName>Note 10 - Inventory (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-10-inventory</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>034 - Disclosure - Note 13 - Stock-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables</Role>
      <ShortName>Note 13 - Stock-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>035 - Disclosure - Note 14 - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-tables</Role>
      <ShortName>Note 14 - Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-14-leases</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>036 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables</Role>
      <ShortName>Note 15 - Accumulated Other Comprehensive Loss (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>037 - Disclosure - Note 16 - Income Taxes (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables</Role>
      <ShortName>Note 16 - Income Taxes (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes</ParentRole>
      <Position>38</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>038 - Disclosure - Note 18 - Segment Reporting (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables</Role>
      <ShortName>Note 18 - Segment Reporting (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>039 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>40</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>040 - Disclosure - Note 3 - Revenue (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual</Role>
      <ShortName>Note 3 - Revenue (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables</ParentRole>
      <Position>41</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>041 - Disclosure - Note 3 - Revenue - Disaggregation of Revenue (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details</Role>
      <ShortName>Note 3 - Revenue - Disaggregation of Revenue (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>042 - Disclosure - Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details</Role>
      <ShortName>Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>43</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>043 - Disclosure - Note 5 - Business Combinations (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual</Role>
      <ShortName>Note 5 - Business Combinations (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables</ParentRole>
      <Position>44</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>044 - Disclosure - Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details</Role>
      <ShortName>Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>45</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>045 - Disclosure - Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details</Role>
      <ShortName>Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>046 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables</ParentRole>
      <Position>47</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>047 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>48</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>048 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>049 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details</Role>
      <ShortName>Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>050 - Disclosure - Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details</Role>
      <ShortName>Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>051 - Disclosure - Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details</Role>
      <ShortName>Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>052 - Disclosure - Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details</Role>
      <ShortName>Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>053 - Disclosure - Note 9 - Property and Equipment (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual</Role>
      <ShortName>Note 9 - Property and Equipment (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables</ParentRole>
      <Position>54</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>054 - Disclosure - Note 9 - Property and Equipment - Components of Property and Equipment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details</Role>
      <ShortName>Note 9 - Property and Equipment - Components of Property and Equipment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>055 - Disclosure - Note 10 - Inventory - Inventory (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details</Role>
      <ShortName>Note 10 - Inventory - Inventory (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>56</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>056 - Disclosure - Note 11 - Financing Obligations (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual</Role>
      <ShortName>Note 11 - Financing Obligations (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations</ParentRole>
      <Position>57</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>057 - Disclosure - Note 12 - Employee Benefit Plans (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual</Role>
      <ShortName>Note 12 - Employee Benefit Plans (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans</ParentRole>
      <Position>58</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>058 - Disclosure - Note 13 - Stock-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual</Role>
      <ShortName>Note 13 - Stock-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables</ParentRole>
      <Position>59</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>059 - Disclosure - Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>60</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>060 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>61</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>061 - Disclosure - Note 13 - Stock-based Compensation - Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>062 - Disclosure - Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>63</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>063 - Disclosure - Note 13 - Stock-based Compensation - Restricted Stock Options (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Restricted Stock Options (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>64</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>064 - Disclosure - Note 13 - Stock-based Compensation - Performance Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Performance Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>065 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details</Role>
      <ShortName>Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>066 - Disclosure - Note 14 - Leases (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual</Role>
      <ShortName>Note 14 - Leases (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-14-leases-tables</ParentRole>
      <Position>67</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>067 - Disclosure - Note 14 - Leases - Balance Sheet Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details</Role>
      <ShortName>Note 14 - Leases - Balance Sheet Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>068 - Disclosure - Note 14 - Leases - Lease Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details</Role>
      <ShortName>Note 14 - Leases - Lease Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>069 - Disclosure - Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details</Role>
      <ShortName>Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>70</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>070 - Disclosure - Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details</Role>
      <ShortName>Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>71</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>071 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details</Role>
      <ShortName>Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>72</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>072 - Disclosure - Note 16 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual</Role>
      <ShortName>Note 16 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables</ParentRole>
      <Position>73</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>073 - Disclosure - Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details</Role>
      <ShortName>Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>74</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>074 - Disclosure - Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details</Role>
      <ShortName>Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>75</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>075 - Disclosure - Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details</Role>
      <ShortName>Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>76</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>076 - Disclosure - Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details</Role>
      <ShortName>Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>77</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>077 - Disclosure - Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details</Role>
      <ShortName>Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>78</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R79.htm</HtmlFileName>
      <LongName>078 - Disclosure - Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details</Role>
      <ShortName>Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>79</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R80.htm</HtmlFileName>
      <LongName>079 - Disclosure - Note 18 - Segment Reporting - Income From Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details</Role>
      <ShortName>Note 18 - Segment Reporting - Income From Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>80</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R81.htm</HtmlFileName>
      <LongName>080 - Disclosure - Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details</Role>
      <ShortName>Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>81</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R82.htm</HtmlFileName>
      <LongName>081 - Disclosure - Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details</Role>
      <ShortName>Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>82</Position>
    </Report>
    <Report instance="prlb20191231_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R83.htm</HtmlFileName>
      <LongName>082 - Disclosure - Note 18 - Segment Reporting - Depreciation and Amortization (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details</Role>
      <ShortName>Note 18 - Segment Reporting - Depreciation and Amortization (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>83</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File doctype="10-K" original="prlb20191231_10k.htm">prlb20191231_10k.htm</File>
    <File>ex_167007.htm</File>
    <File>ex_167008.htm</File>
    <File>ex_167009.htm</File>
    <File>ex_167011.htm</File>
    <File>ex_167012.htm</File>
    <File>ex_167013.htm</File>
    <File>ex_172513.htm</File>
    <File>prlb-20191231.xsd</File>
    <File>prlb-20191231_cal.xml</File>
    <File>prlb-20191231_def.xml</File>
    <File>prlb-20191231_lab.xml</File>
    <File>prlb-20191231_pre.xml</File>
  </InputFiles>
  <SupplementalFiles>
    <File>image02.jpg</File>
    <File>protograph.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy>http://xbrl.sec.gov/country/2017-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://fasb.org/us-gaap/2019-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/dei/2019-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://fasb.org/srt/2019-01-31</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>43
<FILENAME>R53.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6668474992">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount', window );">Due in one year or less</a></td>
<td class="nump">$ 35,437<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount', window );">Due after one year through five years</a></td>
<td class="nump">12,960<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Total marketable securities</a></td>
<td class="nump">$ 48,397<span></span>
</td>
<td class="nump">$ 70,329<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118954083&amp;loc=d3e26610-111562<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in next fiscal year through fifth fiscal year following latest fiscal year. Excludes interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 320<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=75019621&amp;loc=d3e62586-112803<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in next fiscal year following latest fiscal year. Excludes interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 320<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=75019621&amp;loc=d3e62586-112803<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (f)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=118939692&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>44
<FILENAME>R57.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664319872">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 11 - Financing Obligations (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LineOfCredit', window );">Long-term Line of Credit, Total</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(16))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R74.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664540496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">Domestic</a></td>
<td class="nump">$ 74,841<span></span>
</td>
<td class="nump">$ 81,893<span></span>
</td>
<td class="nump">$ 69,929<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign', window );">Foreign</a></td>
<td class="nump">6,352<span></span>
</td>
<td class="nump">9,762<span></span>
</td>
<td class="nump">4,506<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">$ 81,193<span></span>
</td>
<td class="nump">$ 91,655<span></span>
</td>
<td class="nump">$ 74,435<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=68072869&amp;loc=d3e41242-110953<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>46
<FILENAME>R80.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6817428800">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting - Income From Operations (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">$ 79,856<span></span>
</td>
<td class="nump">$ 88,898<span></span>
</td>
<td class="nump">$ 72,226<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">108,594<span></span>
</td>
<td class="nump">115,710<span></span>
</td>
<td class="nump">99,561<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">15,077<span></span>
</td>
<td class="nump">16,747<span></span>
</td>
<td class="nump">12,796<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Corporate Unallocated and Japan Segment[Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="num">$ (43,815)<span></span>
</td>
<td class="num">$ (43,557)<span></span>
</td>
<td class="num">$ (40,131)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_CorporateUnallocatedAndJapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_CorporateUnallocatedAndJapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R70.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6670969312">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2020</a></td>
<td class="nump">$ 4,034<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">2021</a></td>
<td class="nump">2,835<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2022</a></td>
<td class="nump">2,634<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">2023</a></td>
<td class="nump">1,064<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive', window );">2024</a></td>
<td class="nump">498<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive', window );">After 2024</a></td>
<td class="nump">1,613<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments</a></td>
<td class="nump">12,678<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Less interest</a></td>
<td class="num">(773)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Present value of lease liabilities</a></td>
<td class="nump">$ 11,905<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due after fifth fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due in next fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fifth fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fourth fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due in third fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for operating lease, due in second fiscal year following latest fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R78.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6671765648">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance</a></td>
<td class="nump">$ 4,096<span></span>
</td>
<td class="nump">$ 4,233<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions', window );">Additions for tax positions of current year</a></td>
<td class="nump">592<span></span>
</td>
<td class="nump">593<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions', window );">Additions for tax positions of prior years</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">309<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations', window );">Decrease related to expiration of statutes of limitations</a></td>
<td class="num">(90)<span></span>
</td>
<td class="num">(1,039)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance</a></td>
<td class="nump">$ 4,598<span></span>
</td>
<td class="nump">$ 4,096<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=SL37586934-109318<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>49
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
M4$L#!!0    ( $M:6E ?(\\#P    !,"   +    7W)E;',O+G)E;'.MDD^+
MPD ,Q;]*F?L:5\'#8CUYZ6U9_ )Q)OU#.Y,A$[%^>X>];+=44/ 87O+>CT?V
M/S2@=AQ2V\54C'X(J32M:OP"2+8ECVG%D4)6:A:/FD=I(*+ML2'8K-<[D*F'
M.>RGGD7E2B.5^S3%":4A+<TXP)6E/S/WJVR;A5ND9T*YKCM+1[873T$7LF<;
M!I99-G\LCNVW<+ZT+/0:S>,*P).B0\5?UX^8 TBTH_0(:+L A#&^NQT:E8(C
M-R."?S]PN -02P,$%     @ 2UI:4"?HAPZ"    L0   !    !D;V-0<F]P
M<R]A<' N>&UL38Y-"\(P$$3_2NG=;BGH06) L$?!D_>0;FP@R8;-"OGYIH(?
MMWF\81AU8\K(XK%T-8943OTJDH\ Q:X831F:3LTXXFBD(3^ G/,6+V2?$9/
M-(X'P"J8%EQV^3O8:W7..7AKQ%/25V^9"CGIYFHQ*/B76_..7+8\#?NW_+""
MWTG] E!+ P04    " !+6EI0\.L (^X    K @  $0   &1O8U!R;W!S+V-O
M<F4N>&ULS9+/:L,P#(=?9?B>R':A!9/FTK'3!H,5-G8SMMJ:Q7^P-9*^_9*L
M31G; ^QHZ>=/GT"-2<K$C,\Y)LSDL-P-O@M%F;1E)Z*D (HYH=>E'A-A;!YB
M]IK&9SY"TN9#'Q$DYVOP2-IJTC !J[006=M8HTQ&33%?\-8L^/29NQEF#6"'
M'@,5$+4 UDX3TWGH&K@!)AAA]N6[@'8ASM4_L7,'V"4Y%+>D^KZO^]6<&W<0
M\/;T^#*O6[E02 >#XZ_B%)T3;MEU\NMJ=[]_8*WDDE=<5G*]%T*)C>*;]\GU
MA]]-V$?K#NX?&U\%VP9^W47[!5!+ P04    " !+6EI0F5R<(Q &  "<)P
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
M1O]=7F1IY%U/C,=6E:W]'VS/K5;5D,5TI<I?^\^BMI_7_DF2#&$X@ \!_#V
M?1H@A@ Q!K#/'9(A('D/L*\_ZH=BW\TFU_ERWJAKT/3E/>7=+&+WB7G[VZ[1
MOFS[S+R>UK1>EO$\NG1I!L6J5_ ;!1L5D<D]&G!DL.(DG'\T6%.%^*C84$6"
MNR#@&(4-%S?A*0Y/8'ABPY.;\,QY150QP08I-$A)^-0QH(H9-LB@04;"F5ME
M(/&4>0(M)C3>J?,*2 2VF$*+*8U/' L@\91Z!BUF--ZM-9!XBLUB3%Q,,[CU
M1AI/Q9F':T8R<$(VT'B*SB#<#XS3#&[9D<93=X;Y98)F<"L/-+X)S##FC%+,
M4]<%:#*/"V:=493YQ'4!FJG'!0//*,Y\YKI0C8@]+IAY1HD6S'4!&NYQP=@S
M"K40K@O0>+8(ALEGE&M!JD\UOKIPS#ZG7 MW@4$:SPK#,?N<<BW<%09I/"L,
MQ^QSRG7BKC!(X_OV@-GGE.O$76&0QK/"<,P^IUPG[@J#-)[-A6/V.>4Z(=4'
M&E_U,?N<<IV0Z@.-K_J8?4ZY3DGU@<97?<P^IURGI/I4XQT+9I]3KE-WA0$:
MGXO [ O*=>K.,:3QS#&!V1>4Z]2=8T#CVRL%9E]0KE-W%P,:KXOG>SOE.G5G
M,M!X73#[@G*=.GOE9M"D5E,/.UT\_'G<\!H@*-^9P\UZT&0W;CR;3"<SYGI%
M-\>\2C8'>X1N@ZTZU_;\?M,Z'M,?N#TFOLO[,_Z/O#D4=1L\*VT.F_9(N%=*
M2].A^,YTZ"CSW7A3RKWN+B?FNNG/UOV-5J?A=X-H_/%B^1]02P,$%     @
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
M??V>*!58>H4O\OLH94<>%P2?A)HF<L[ZMM0O!&V'E@O&OE_\ U!+ P04
M" !+6EI0C=AA5"D$   C$@  &    'AL+W=O<FMS:&5E=',O<VAE970T+GAM
M;'U8VX[;-A#]%4/O76F&5RUL VL;00NTP")%VF>M35\071Q)NT[_OM0ECCP<
MY<62Z#/#,T-R#LGEK:J_-F?GVL7W(B^;571NV^MS'#?[LRNRYJFZNM+_<ZSJ
M(FO]9WV*FVOMLD-O5.0Q)HF.B^Q21NMEW_9:KY?5>YM?2O=:+YKWHLCJ_S8N
MKVZK"*(?#9\OIW/;-<3KY34[N;]=^^7Z6ONO^.[E<"E<V5RJ<E&[XRIZ@><=
MJLZ@1_QS<;=F\K[H0GFKJJ_=QQ^'591TC%SN]FWG(O./#[=U>=YY\CR^C4ZC
M>Y^=X?3]A_=/?? ^F+>L<=LJ__=R:,^KR$:+@SMF[WG[N;K][L: 5+08H__3
M?;C<PSLFOH]]E3?][V+_WK15,7KQ5(KL^_"\E/WS-OQCQ&C&&^!H@'<#T+\T
M$*.!^&D@?VD@1P-)#.(AE#XWNZS-ULNZNBWJ87BO63>+X%GZ[.^[QC[9_7\^
M/8UO_5A#8I;Q1^=HQ&P&#$XQ=T3LO=^[0*Z+#0;F^-C!-D1H MF%$$@LST*P
M@8K>@7APD/(.).M ]@[DU $D)%,#1O68LL=(90U:$B\#DTJEFL0<PH24,DUX
MUHIEK1C60%@/&#WI!U%(05DSL$2G0&;++H2!2K2<&2S-LM8,:S(C-CJD(Q2F
M9$BV',QJDQ+6(0Q2827RK W+VH13# 3OP+(.+!.V)&';@*C!U)"ILPU1VBHA
M2- A2GF8YBFG+.64H:P(Y33H1J!.:1$(46B-(+YV#$HH/;,D(.%K7L*0UK3H
M)4%/TN>9)IJ!*51 ,\UY Z_.,[QG:C4PO(-B#<SZ4U)(2IS!^0 M4.8,#D'#
MS"P!5@-> !GJEE+'<&ZGT_DX,@]AUMK44N*,-T2<X\VK!@B&=TIYBS!%0AA*
M.T2A4;1Z<BB<$RK@E0H8J4(J52/H(8L^-$%9A[ 4M*++DH$9*2>K]Y$WKU7
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
M",44$DY&L>-T1)" ,@ )H&.E1J&&(>$&-ED!(#-(./ENM!/O(>= @B A1RK
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
M<VAE970X+GAM;&U386_;(!#]*X@?4!*2MEED6VHZ39NT25&G;9^)?;91@?,
MQ]V_'V#7<SM_ >ZX]^[=<60#VF?7 GCRHI5Q.6V][XZ,N;(%+=P-=F#"38U6
M"Q],VS#761!5 FG%^&9SQ[20AA99\IUMD6'OE31PML3U6@O[YP0*AYQNZ:OC
M23:MCPY69)UHX#OX']W9!HO-+)748)Q$0RS4.7W8'D_[&)\"?DH8W.),8B47
MQ.=H?*ERNHF"0$'I(X,(VQ4>0:E(%&3\GCCIG#("E^=7]D^I]E#+13AX1/5+
M5K[-Z8&2"FK1*_^$PV>8ZKFE9"K^*UQ!A?"H).0H4;FTDK)W'O7$$J1H\3+N
MTJ1]&&]N^01;!_ )P&? (>5A8Z*D_*/PHL@L#L2.O>]$?.+MD8?>E-&96I'N
M@G@7O-=B^^$N8]=(-,6<QAB^C)DC6&"?4_"U%"?^'YROPW>K"G<)OGNC<+=.
ML%\EV">"_1N"^W<EKL4<WB5ABYYJL$V:)D=*[$V:Y(5W'MB'](CL7_@X[=^$
M;:1QY((^O&SJ?XWH(4C9W(01:L,'FPT%M8_'^W"VXYB-AL=N^D%L_L;%7U!+
M P04    " !+6EI03D_F^;8!  #2 P  &    'AL+W=O<FMS:&5E=',O<VAE
M970Y+GAM;&U386_<( S]*X@?4'*Y=.N=DDB]5M,F;=*IT[K/7.(DJ( S()?N
MWP](FF5=O@ V?L_/QN0CFA?; 3CRJJ2V!>V<ZX^,V:H#Q>T-]J#]38-&<>=-
MTS+;&^!U!"G)TB3YP!07FI9Y])U-F>/@I-!P-L0.2G'S^P02QX+NZ)OC2;2=
M"PY6YCUOX3NX'_W9>(LM++50H*U 30PT!;W?'4]9B(\!SP)&NSJ34,D%\248
M7^J")D$02*A<8.!^N\(#2!F(O(Q?,R==4@;@^OS&_BG6[FNY< L/*'^*VG4%
MO:.DAH8/TCWA^!GF>FXIF8O_"E>0/CPH\3DJE#:NI!JL0S6S>"F*OTZ[T'$?
MIYOL,,.V >D,2!? 7<S#ID11^2-WO,P-CL1,O>]Y>.+=,?6]J8(SMB+>>?'6
M>Z_E[G#(V340S3&G*29=QRP1S+,O*=*M%*?T/WBZ#=]O*MQ'^/X?A?MM@FR3
M((L$V3I_DKPK<2OF?9%LU5,%IHW39$F%@XZ3O/(N WN?QC?Y&SY-^S=N6J$M
MN:#S+QO[WR Z\%*2&S]"G?]@BR&A<>'XT9_--&:3X;"??Q!;OG'Y!U!+ P04
M    " !+6EI08VR32[<!  #2 P  &0   'AL+W=O<FMS:&5E=',O<VAE970Q
M,"YX;6QM4]MNG# 0_17+'Q"SAC;I"I"RJ:I6:J55JJ;/7AC BLU0VRSIW]<V
MA-*4%]LS/N?,Q>-\0O-L.P!'7K3J;4$[YX8C8[;J0 M[@P/T_J9!HX7SIFF9
M'0R(.I*T8CQ)WC,M9$_+//K.ILQQ=$KV<#;$CEH+\_L$"J>"'NBKXU&VG0L.
M5N:#:.$[N!_#V7B+K2JUU-!;B3TQT!3T_G \90$? 4\2)KLYDU#)!?$Y&%_J
M@B8A(5!0N: @_':%!U J"/DT?BV:= T9B-OSJ_JG6+NOY2(L/*#Z*6O7%?2.
MDAH:,2KWB--G6.IY1\E2_%>X@O+PD(F/4:&R<275:!WJ1<6GHL7+O,L^[M-\
MD]XNM'T"7PA\)=S%.&P.%#/_*)PH<X,3,7/O!Q&>^'#DOC=5<,96Q#N?O/7>
M:\D3GK-K$%HPIQG#-YC#BF!>?0W!]T*<^']TOD]/=S-,(SW=1O^0[@MDNP)9
M%,C^*3%]4^(>)GL3A&UZJL&T<9HLJ7#LXR1OO.O WO/X)G_A\[1_$Z:5O247
M=/YE8_\;1 <^E>3&CU#G/]AJ*&A<.-[ZLYG';#8<#LL/8NLW+O\ 4$L#!!0
M   ( $M:6E )W2R N $  -(#   9    >&PO=V]R:W-H965T<R]S:&5E=#$Q
M+GAM;&U3VV[<(!#]%<0'!"_K3=*5;2F;JFJE5EJE:OK,VF,;!8P+>)W^?0?L
MN&[J%V"&<\Y<&++1V!?7 GCRJE7G<MIZWQ\9<V4+6K@;TT.'-[6Q6G@T;<-<
M;T%4D:05XTERR[20'2VRZ#O;(C.#5[*#LR5NT%K8WR=09LSICKXYGF33^N!@
M1=:+!KZ#_]&?+5IL4:FDALY)TQ$+=4X?=L=3&O 1\"QA=*LS"95<C'D)QI<J
MITE("!24/B@(W*[P"$H%(4SCUZQ)EY"!N#Z_J7^*M6,M%^'@T:B?LO)M3N\I
MJ: 6@_)/9OP,<ST'2N;BO\(5%,)#)ABC-,K%E92#\T;/*IB*%J_3+KNXC]--
M>IAIVP0^$_A"N(]QV!0H9OY1>%%DUHS$3KWO17CBW9%C;\K@C*V(=YB\0^^U
MX,DA8]<@-&-.$X:O,+L%P5!]"<&W0ISX?W2^3=]O9KB/]/TZ^H?]MD"Z*9!&
M@?2?$F_?E;B%N7L7A*UZJL$V<9H<*<W0Q4E>>9>!?>#Q3?["IVG_)FPC.T<N
MQN/+QO[7QGC 5)(;'*$6/]AB**A].-[AV4YC-AG>]/,/8LLW+OX 4$L#!!0
M   ( $M:6E"'1:>RN $  -(#   9    >&PO=V]R:W-H965T<R]S:&5E=#$R
M+GAM;&U3[8Z<(!1]%<(#+,K,M+,3-=G9IFF3-IELT_8WHU<E"V(!Q^W;]X*N
MM5O_ /=RSKD?7++1V&?7 GCRHE7G<MIZWY\8<V4+6K@[TT.'-[6Q6G@T;<-<
M;T%4D:05XTGRCFDA.UIDT7>Q168&KV0'%TO<H+6PO\^@S)C3E+XZGF33^N!@
M1=:+!KZ!_]Y?+%IL4:FDALY)TQ$+=4X?TM-Y'_ 1\$/"Z%9G$BJY&O,<C,]5
M3I.0$"@H?5 0N-W@$90*0IC&KUF3+B$#<7U^5?\8:\=:KL+!HU$_9>7;G!XI
MJ: 6@_)/9OP$<ST'2N;BO\ -%,)#)ABC-,K%E92#\T;/*IB*%B_3+KNXC]/-
MX3#3M@E\)O"%<(QQV!0H9OY!>%%DUHS$3KWO17CB],2Q-V5PQE;$.TS>H?=6
M\.28L5L0FC'G"<-7F'1!,%1?0O"M$&?^'YUOTW>;&>XB?;>.?K_;%MAO"NRC
MP/Z?$N_?E+B!29,W0=BJIQIL$Z?)D=(,79SDE7<9V <>W^0O?)KVK\(VLG/D
M:CR^;.Q_;8P'3"6YPQ%J\8,MAH+:A^-[/-MIS";#FW[^06SYQL4?4$L#!!0
M   ( $M:6E"E89H/M@$  -(#   9    >&PO=V]R:W-H965T<R]S:&5E=#$S
M+GAM;&U3VV[<(!#]%<0'A#7>ING*MI1-%;52(ZU2M7UF[;&- AX'\#KY^P)V
M'#?U"S##.6<N#-F(YLFV (Z\:-79G+;.]0?&;-F"%O8*>^C\38U&"^=-TS#;
M&Q!5)&G%^&YWS;20'2VRZ#N9(L/!*=G!R1 [:"W,ZQ$4CCE-Z)OC43:M"PY6
M9+UHX">X7_W)>(LM*I74T%F)'3%0Y_0V.1SW 1\!OR6,=G4FH9(SXE,POE<Y
MW86$0$'I@H+PVP7N0*D@Y--XGC7I$C(0U^<W]?M8NZ_E+"S<H?HC*]?F](:2
M"FHQ*/>(XS>8Z_E$R5S\#[B \O"0B8]1HK)Q)>5@'>I9Q:>BQ<NTRR[NXW23
M7L^T;0*?"7PAW,0X; H4,_\JG"@R@R,Q4^][$9XX.7#?FS(X8ROBG4_>>N^E
MX$F2L4L0FC''"<-7F'<$\^I+"+X5XLC_H_-M>KJ981KIZ3KZEW1;8+\IL(\"
M^W]*Y!]*W,)\#,)6/=5@FCA-EI0X='&25]YE8&]Y?)-W^#3M#\(TLK/DC,Z_
M;.Q_C>C I[*[\B/4^@^V& IJ%XZ?_=E,8S89#OOY!['E&Q=_ 5!+ P04
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
M>YCW1;)-3S68-DZ3)16.?9SDC7<=V <>W^0??)[V[\*TLK?D@LZ_;.Q_@^C
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
M?[#%$-"X<+SV9S.-V60XW<\_B"S?N/P 4$L#!!0    ( $M:6E I+[[IL (
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
M:&5E=#(Y+GAM;'54[6[;(!1]%<0#% <GVQK9EII6U29M4M1IZV]B7W^H?'B
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
M.O^RL?\UH@.?RN[&CU#K/]AB**A=.'[T9S.-V60X[.<?Q)9O7/P!4$L#!!0
M   ( $M:6E U I8*! (  #0&   9    >&PO=V]R:W-H965T<R]S:&5E=#,U
M+GAM;'55;6^;,!#^*X@?4!,3\B9 :CI5F[1)4:=UGQUR 50;4]L)W;^?;0AC
M]/(EMH_GY8Z+C[23ZDU7 ";X$+S165@9T^X(T44%@ND'V4)CGYRE$LS8HRJ)
M;A6PDR<)3F@4K8A@=1/FJ8\=5)[*B^%U P<5Z(L03/W9 Y==%B["6^"E+BOC
M B1/6U;"3S"_VH.R)S*JG&H!C:YE$R@X9^'C8K=?1([@$:\U='JR#UPI1RG?
MW.';*0LCEQ%P*(R38':YPA-P[I1L'N^#:#AZ.N)T?U-_]L7;8HY,PY/DO^N3
MJ;)P$P8G.+,+-R^R^PI#04D8#-5_ARMP"W>96(]"<NU_@^*BC12#BDU%L(]^
MK1N_=H/^C883Z$"@,P+IC7SF7YAA>:ID%ZC^Y;?,]7BQH_;=%"[H7X5_9I/7
M-GK-8YJDY.J$!LR^Q] )9C$BB%4?+2AFL:>?Z!2GQVB&L:?'4_HVQ@66J,#2
M"RS_*W$U*Q'#K'&3!#5)$('-S 3#;'&3%6JR^BP01S,3#'.G76O49(T(T)D)
MAKG3DPUJLD$$EC,3#)/@)EO49(L(S!N/8>XTW@X?] 9%B,2\]2AHWGLRN;0"
M5.G'E0X*>6G\K)Q$QY'X2/VE_P?OY^D/ILJZT<%1&CLZ_ 4_2VG YA(]V/]A
M94?X>.!P-FZ[MGO5S['^8&0[S&@R?BCROU!+ P04    " !+6EI0N<B;N-X!
M   !!0  &0   'AL+W=O<FMS:&5E=',O<VAE970S-BYX;6QU5.N.G" 4?A7"
M RR..N-THB8[N]FT29M,MFG[F]'C)0MB <?MVQ?0L=;2/\(Y?)=S$$A'(=]4
M Z#1.V>=RG"C=7\B1!4-<*H>1 ^=6:F$Y%2;4-9$]1)HZ4B<D3 (#H33ML-Y
MZG(7F:=BT*SMX"*1&CBG\M<9F!@SO,/WQ&M;-]HF2)[VM(:OH+_U%VDBLJB4
M+8=.M:)#$JH,/^Y.Y\3B'>!["Z-:S9'MY"K$FPT^E1D.;$' H-!6@9KA!D_
MF!4R9?R<-?%B:8GK^5W]Q?5N>KE2!4^"_6A+W63XB%$)%1V8?A7C1YC[V6,T
M-_\9;L ,W%9B/ K!E/NB8E!:\%G%E,+I^S2VG1O':26YT_R$<":$"^'H"&0R
M<I4_4TWS5(H1R6GO>VI_\>X4FKTI;-)MA5LSQ2N3O>51'*3D9H5FS'G"A"O,
M;D$0H[Y8A#Z+<_@//?33(V^%D:-':_J'R"\0>P5B)Q#_U>)NTZ(/\Y\J]UZ3
MO4<@VICX,+'?Y. U.7@$]AL3'^;@-TF\)HE'(-F8^##'C0E9'4$.LG:73Z%"
M#)V[^*OL<K\?0W>$_\"GQ^$+E77;*705VEP$=UPK(3284H('LZN->8^6@$&E
M[30Q<SG=RBG0HI\?'+*\>OEO4$L#!!0    ( $M:6E "H)9\MP$  -(#   9
M    >&PO=V]R:W-H965T<R]S:&5E=#,W+GAM;&U3VVZ<,!#]%<L?$+.&39,5
M(&431:V42*M4;9^],( 57ZAMEN3O8QM"4<J+[1F?<^;B<3YJ\VH[ (?>I%"V
MP)US_8$06W4@F;W2/2A_TV@CF?.F:8GM#; ZDJ0@-$FNB61<X3*/OI,I<STX
MP16<#+*#E,R\'T'HL< [_.EXX6WG@H.4><]:^ GN5W\RWB*+2LTE*,NU0@::
M M_M#L<LX"/@-X?1KLXH5'+6^C48/^H")R$A$%"YH,#\=H%[$"((^33^SIIX
M"1F(Z_.G^F.LW==R9A;NM?C#:]<5^ :C&AHV"/>BQ^\PU[/':"[^"2X@/#QD
MXF-46MBXHFJP3LM9Q:<BV=NT<Q7W<;K97\^T;0*="70AW,0X9 H4,W]@CI6Y
MT2,R4^][%IYX=Z"^-U5PQE;$.Y^\]=Y+F6:W.;D$H1ESG#!TA=DM".+5EQ!T
M*\21_D>GV_1T,\,TTM,U_3;=%L@V!;(HD*U+W"=?2MS"?"V2K'HJP;1QFBRJ
M]*#B)*^\R\#>T?@F_^#3M#\STW)ET5D[_[*Q_XW6#GPJR94?H<Y_L,40T+AP
M_.;/9AJSR7"ZGW\06;YQ^0%02P,$%     @ 2UI:4#-2OXON 0  9@4  !D
M  !X;"]W;W)K<VAE971S+W-H965T,S@N>&UL;51ACYLP#/TK47[ I0TM<!5%
MNMXT;=(F53=M^YQ2MZ!+"$O2<OOW2P+'&/,7$CO/[]D)=M%K\VIK $?>E&SM
MGM;.=3O&;%6#$O9!=]#ZDXLV2CAOFBNSG0%QCD%*,KY:I4R)IJ5E$7U'4Q;Z
MYF33PM$0>U-*F-\'D+K?TS5]=[PTU]H%!RN+3ESA&[COW=%XBTTLYT9!:QO=
M$@.7/7U:[PYYP$? CP9Z.]N34,E)Z]=@?#[OZ2HD!!(J%QB$7^[P#%(&(I_&
MKY&33I(A<+Y_9_\8:_>UG(2%9RU_-F=7[VE.R1DNXB;=B^X_P5C/EI*Q^"]P
M!^GA(1.O46EIXY=4-^NT&EE\*DJ\#6O3QK4?3K)\#,,#^!C IX \ZK!!*&;^
M03A1%D;WQ QWWXGPQ.L=]W=3!6>\BGCFD[?>>R^3+2_8/1"-F,. X3/,>D(P
MSSY)<$SBP/\+YWAX@F:8Q/!D'OZ8X 0;E& 3"3;_E)@L2L0P&UQDBXIL$8+M
M0@3#I+A(BHJD"$&V$,$P.2Z2H2(90O"X$$$PZ0H7R5&1'"%8+T0PS/+/8;/_
M7(&YQ@ZWI-*W-DZ7F7<:(D\\]LE?^#"!O@IS;5I+3MKY;HL]<=':@4]E]>"?
MKO9#;S(D7%S89GYOAM8?#*>[<:JQ:;26?P!02P,$%     @ 2UI:4,)5:<'\
M 0  [ 4  !D   !X;"]W;W)K<VAE971S+W-H965T,SDN>&ULC53;CILP$/T5
MQ >LN>4J0-ILM6JE5HJV:OOLP"2@M3%KF[#]^]J&4$IFI;[$]G N,\YXTE[(
M5U4!:.^=LT9E?J5UNR=$%15PJAY$"XWY<A:24VV.\D)4*X&6CL09B8)@33BM
M&S]/7>PH\U1TFM4-'*6G.LZI_'T )OK,#_U;X*6^5-H&2)ZV] +?0?]HC]*<
MR*12UAP:58O&DW#._,=P?P@#2W"(GS7T:K;W;"DG(5[MX4N9^8'-"!@4VDI0
MLUSA"1BS2B:/MU'4GSPM<;Z_J3^[XDTQ)ZK@2;!?=:FKS-_Z7@EGVC'](OK/
M,!:T\KVQ^J]P!6;@-A/C40BFW*]7=$H+/JJ85#A]']:Z<6L_ZM]H."$:"=&"
M0 8CE_DGJFF>2M%[<KC\EMK_.-Q'YFX*&W17X;Z9Y)6)7O-X':?D:H5&S&'
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
M7XH]FPU5=%4(?@M$_W4[:IH(/"%]^GMCM(=MW^GCD=IZ72%(BNAJ @V:LM?
MB0:,BDA''U- 7XH2SMSA_PG6<P5V))NY!,3$3Y%X"TUL #0- )TD9:])K:;M
M.1*<I@[M7)7AE#B'MIFK4I!E#Y"1%QG-D!','>1>@R=I("88Y\2E]@ES C%
M#KA/B%&&0>QG3[WLZ9P]B1WV=)8)$(@2YR37<QG,,8S=#O%$RS.$'[0J]E)C
M#S5PJ/$<)XM1CF#B</N$,",$8(?<(\0$I7'V@#WSLF>>!G>^;=EKR#33(LD<
M;I^(N%TR%X%%COR\Q,M+/+Q.TY;$Q^MVMD]$G*^VF8LT;^+P1I-;LV'B9">2
M#/;\TBIS^4RLX]![AN;6=>RE'H;][/H(TT_2'U2<JE8&.Z[TG6YOWB/GBFG&
M>*%;^*R'][BIV5&99:;7HA]A_4;Q;IC.T?@78?4/4$L#!!0    ( $M:6E!:
MQ+"+H0,  .@0   9    >&PO=V]R:W-H965T<R]S:&5E=#0T+GAM;(U8VV[:
M0!#]%<OOB??J2P1()11:J96B5&V?'5C BNVEM@GIWW=]"34[LPDOV&O.S)R9
MV3F^3$ZZ>J[W2C7>:Y&7]=3?-\WA+@CJ]5X5:7VK#ZHT_VQU5:2-65:[H#Y4
M*MUT1D4>,$+"H$BSTI]-NFL/U6RBCTV>E>JA\NIC4:35W[G*]6GJ4__MPF.V
MVS?MA6 V.:0[]4,U/P\/E5D%9R^;K%!EG>G2J]1VZG^B=RM.6H,.\2M3IWIT
M[K6I/&G]W"Z^;J8^:1FI7*V;UD5J#B_J7N5YZ\GP^#,X]<\Q6\/Q^9OW99>\
M2>8IK=6]SG]GFV8_]6/?VZAM>LR;1WWZHH:$I.\-V7]3+RHW\):)B;'6>=W]
M>NMCW>AB\&*H%.EK?\S*[G@:_+^9X09L,&!G QJ]:\ ' _[?0+QK( 8#<:V!
M' SDM0;A8!!>:Q -!I%E$/35[=JU2)MT-JGTR:OZ'7=(VXU-[R*S(=;MQ:[_
MW7^F8[6Y^C(3G$V"E];1@)GW&#;"\"B\Q-Q##"7Q)68!,5:DSQ 16I#E%8%6
M$",X/V,"4Y!S51A:%=8Y$..,8XO(HL?(#E-V&&)E Q&)!5E""*5$NLARE"P'
M9 475GLXC,-B22S8HH>%E[!(VFVZ#K9$8>.@%\D)-#D!DJ/2WE<")D>BF%JD
M,53"+%]+ 3C'<A3P@K%$&4ND'1)W$*(.0KCY$FO<%A@FPH-$:) (V>&.-&/4
M08PX2"SAB)%=1Q.9X'$2-$[R\2C.$[C1* F98XHHP960(#4EMA02)!3GH2.2
M0W/IQQ,['T 7ZI'$'.@N!822)"2VSGP(N^2-JR*%LBAL0G,,1!S[G^*"1C%%
MB^PX&,BQ@RFN+12*B^")73FH"#1Q%@Z7!(IH@@ MDB#036(W<C6@QMOBQMU'
M7& H5 \AJ$TG!($X@71"0)I3)QU<BBC4(J#QJP$TIL.<<7#%HE"RA&#V/,4P
M(7=]<<FB4+.$X':@!#8R<@5BN&0Q*%E".&ZO#-<BAFB1D-:L,:A%U-EEYGBD
M0G1!.'23X;K D)$7MBXP^*@322=77!@8% 9P"YXC("$< L1P76"8+CCNC@R?
M98;-,J@)G.5W^H=/*4.>&&!-,)#CN83A4\J0*94NJOC\,6S^0$W@_#E+PO'Q
MX]@3@UT2!"2(W>-@]+K6?@/XGE:[K*R])]V8-[_N_6RK=:.,0W)K*.]5NCDO
M<K5MVM/(G%?]NW>_:/1A^*X0G#]NS/X!4$L#!!0    ( $M:6E 27#G!!@,
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
M!$:*0$QQ*T=07,RS,KE1Q(U.(\8,1HI 3'$CA41LIC M!,!%(MQQD(@;!X-
M4!+HA*DQ@5$@$ M(=F.*\YAD-R;/9RY:FL'($( 9-+L)3:64[E<A5(5<7#"
M!"(0R6Y*LYNX9E)B)F+*2&)*240I-U% I%+#C(-1)@'*$LXJ!I!$ '*+#(C8
MKQ>)R2(!61)NMI@'\A$>(%'(+!XDYH%$I<YD4>)2EZ#429U.HN7BS*W3210Q
MHJ49# V)H.'6J:0\> )ND$HQ#),8&Q)APZW3232_-\0+98;@,HF)(1]9LR 1
M%RB%<: >P0$4,?-1& <*X$ Q-:8P#A3" 7FID'3M'";N\U%T/;)0+>TPKSAH
M/>)&5]&EQA/R V1&<WXP@A1"D)O=2?2C["KZDL-;P912Z"7'#2\0L>!6&&4*
MK5I(>)&(&P=32@%*)0G3!2:+0F0AX:5D$4K25V) %RFY=V*% :,08$A\Z7*C
M6R&YVQ%;)$NY9ZDQB#1@#(GO)%I6=VJTXV>2+6Z0D(I9$FM,+(W>Q=P0(Q&W
MQ-<8:QI@C808BKA-$,PK#7B5,G6MF8T4A!@WQ)HB1H0A6>1KBIFE;&D(@T8C
MT)"M';I1\J1%&+F&@$R:B+O)F$@:+:Y(BNGBRJ01"3%5Q29D]ODT!I=&X"+9
M J*4&P?330.ZI5P98![I1Q8\2*09$!O,&0,XDS*K1(/)8!XA Q*1O;5@MBE<
MV/HX[)\WWJZZEL/F_>SJ?8_^10Z;RO_+QPW^W[/Z>"X;[[UJVZH8-I /5=7:
MSDOXI0O1R6;[^TEN#VU_&'?'];BQ/IZTU67ZT2"X_W*Q^0]02P,$%     @
M3%I:4%F=RLD& @  ]P4  !D   !X;"]W;W)K<VAE971S+W-H965T-3 N>&UL
ME93;CILP$(9?!?$ :\Z0") :JJJ56BG:JNVU$X: UF!J.V'[]K4-H02L:O<F
M]@S_S#?CV),.E+WP&D!8KRWI>&;70O1[A/BYAA;S)]I#)[]4E+582)-=$.\9
MX%('M01YCA.A%C>=G:?:=V1Y2J^"-!T<F<6O;8O9GP,0.F2V:]\=S\VE%LJ!
M\K3'%_@.XD=_9-)"<Y:R::'C#>TL!E5F?W#W1:+T6O"S@8$O]I;JY$3IBS*^
ME)GMJ(* P%FH#%@N-RB $)5(EO%[RFG/2!6XW-^S?]*]RUY.F$-!R:^F%'5F
M)[950H6O1#S3X3-,_82V-37_%6Y I%Q5(AEG2KC^M<Y7+F@[99&EM/AU7)M.
MK\.4_QYF#O"F &\.<(/_!OA3@+\*0&-ENM6/6. \972PV/AG]5C="7?OR\,\
M*Z<^._U-=LNE]Y8'NS!%-Y5HTAQ&C;?0>(^*8JN(_DF0+&"NPC-6X>GXX*&*
M:%7%J FUIM,:WW$C,\4W4GP#)5Y11DWT)DI@I 0&2K*B!.^@A$9*:*#L5I1P
M0_$2US=3(B,EVE!"QUE1H@W%#1:B!TILI,0&BKNBQ!M*X#J)F9(8*8F!LKK'
MAV1SQ]S8CU;G6AA4NR1<MXP63U"-Q&^879J.6R<JY&O6;ZZB5(#,Z#S)9+6<
MPK-!H!)J&\L]&V?1: C:3V,6S;,^_PM02P,$%     @ 3%I:4&X_4D45 @
M^@8  !D   !X;"]W;W)K<VAE971S+W-H965T-3$N>&ULC97;CILP%$5_!?$!
M8^Z$")!F,JI:J96BJ=H^.^$DH#&8VDZ8_GUM0V@"+LE+?&'OS3HGB9UVE+WS
M$D!8'S5I>&:70K1KA/B^A!KS)]I"(Y\<**NQD$MV1+QE@ MMJ@GR'"="-:X:
M.T_UWI;E*3T)4C6P918_U35F?UZ T"ZS7?NR\58=2Z$V4)ZV^ C?0?QHMTRN
MT)A25#4TO**-Q>"0V<_N>N,ZRJ 5/ROH^-7<4J7L*'U7BR]%9CN*" CLA8K
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
MR%_]A:L(32IE2Z$3+>L\#E7F/X:'<ZSQ!O"[A5',YI[NY,K8BPZ^E9D?:$-
MH)!: :OA!B<@1 LI&Z].TY]*:N)\_J[^U?2N>KEB 2=&_K2E;#+_P?=*J/!
MY#,;G\#UL_4]U_QWN %1<.U$U2@8$>;K%8.0C#H5987B-SNVG1E'N[)/'&V=
M$#E"-!'"W:>$V!'B#\+G%1)'2!8$9%LQ>W/&$N<I9Z/'[>GV6/]$X2%1NU_H
MI-ELLZ:V1ZCL+=]&48IN6LAACA83S3#AA$!*?2H1K94X1G?T18'3/6*W@)SO
M(6'PL.XB7FTT-@+)?XW&BT8MYHO!=-;I?I,LS*Z XLUV8=>"MC-0N'2+9D=$
M@=?F]Q=>P89.ZDYGV>F&/4;ZB!?YH[IY]J)\R-AK^P/SNNV$=V52_4#FF"O&
M)"B'P4:9:]1+,04$*JFG>S7G]K[80++>/05H>H_R?U!+ P04    " !,6EI0
M=[:2;XD"  "#"   &0   'AL+W=O<FMS:&5E=',O<VAE970U-2YX;6R-EMN.
MFS 0AE\%<=_%1PZK)%*35=5*K11MU?;:29P$+6!JG&3[]K6!(-:>K7H3;///
MS#=C9\SBIO1+=Y;21*]UU73+^&Q,^Y@DW?XL:]$]J%8V]LU1Z5H8.]6GI&NU
M%(?>J*X2@E":U*)LXM6B7]OJU4)=3%4V<JNC[E+70O]9RTK=EC&.[PO/Y>EL
MW$*R6K3B)+]+\Z/=:CM+)B^'LI9-5ZHFTO*XC#_BQR>,G$&O^%G*6S<;1RZ5
MG5(O;O+EL(R1(Y*5W!OG0MC'56YD53E/EN/WZ#2>8CK#^?CN_5.?O$UF)SJY
M4=6O\F#.RSB/HX,\BDMEGM7MLQP3XG$T9O]57F5EY8[$QMBKJNM_H_VE,ZH>
MO5B46KP.S[+IG[?1_]T,-B"C 9D,,/NG 1T-Z/\:L-& >0;)D$I?FR=AQ&JA
MU2W2P_:VPITB_,AL]?=NL2]V_\Z6I[.KUQ4G;)%<G:-1LQXT9*8A;Q6;4)%Z
MDJ=0@E$^:1(+.9$2D)3T#M@;4NZ1#AK>:YHA"$-%[M$"*L33%(:A( P%8%(/
M9M"DLS 9SQGU8  5R7$!PS 0A@$PF0?#@C $Y07WMGH3RG#.&7ZG-AS$X0".
MMP5K'N*P@ONU 52$$@K#I"!,"L 4'DP:;@%EV&.!1!3!*!F(DH4H,P<#2A9$
MX8QBORZABM@=?^?,Y"!,'L!@ZI^9/ A#<\Z1_^<'9(3:XL X!8A3 +7Q=F!=
M!'$^8(*SPJOA!M 5/*,$YK&7%M@744"4^4"C9MY(2$HS''1'0$=RA+#?(D,=
M3E/&_%.6S)J[NYZ_"7TJFR[:*6/OB;Z;'Y4RTOI$#];;V7X13)-*'HT;9G:L
MAVMQF!C5CE=^,GUWK/X"4$L#!!0    ( $Q:6E!)(&#.! (  +\%   9
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
MN=GX/^\ML1(D#U2;S%SZ7CBI]@',_G-,9Q:-)D %_&*FJW!R=JVE_A>-HL,
M?\)Z@DSB6S78N\GRCZ:[%;X3?BEKX1R95//)3)$S8Q*41=]3WVBA+J+A0.$L
M]7:I]KP;Q]U!LJ:_:=!PW65_ 5!+ P04    " !,6EI0X6,*"L4#  !@$@
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
M;KT/0FAN-(8S\[J>S/%M:)3\H.UM9NYE=X;I&EHT_?DL& Z)Z[]02P,$%
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
MYC8_,"9!>?2>U-M9J"^"<5+!0>KA3(UYWQ;[B63MT/+)^-VQ^@]02P,$%
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
M"='\3+8;'\3H!.RGMR[F#U?^ U!+ P04    " !,6EI0;TU>IY@"   0"0
M&0   'AL+W=O<FMS:&5E=',O<VAE970W,BYX;6R-EFV/HC 0Q[\*X?TN%,J3
M49)5<KE+[A*SE[U[7;4J6:!<6V7OVU];D,6V>KZ1=OC/S&_&ANF\(_2='3'F
MSD==-6SA'CEO9Y['MD=<(_9,6MR(-WM":\3%EAX\UE*,=LJIKKS ]V.O1F7C
MYG-E6]-\3DZ\*AN\I@X[U36B?Y>X(MW"!>[%\%H>CEP:O'S>H@/^B?E;NZ9B
MYXU1=F6-&U:2QJ%XOW!?P*P OG10BE\E[MAD[<A2-H2\R\VWW<+U)1&N\);+
M$$@\SGB%JTI&$AQ_AJ#NF%,Z3M>7Z%]4\:*8#6)X1:K?Y8X?%V[J.CN\1Z>*
MOY+N*QX*BEQGJ/X[/N-*R"6)R+$E%5._SO;$.*F'* *E1A_]LVS4LQOB7]SL
M#L'@$(P.(+[K$ X.X:<#O.L !P>H.7A]*:HW!>(HGU/2.;3_>ULD3Q&80=']
MK32J9JMWHCU,6,]YG(5S[RP##9IEKPDF&C J/!%]3!'84BP#PSVX3K R%;$F
M*4P)\%,[16@M-%0!X%6A4"NTUT1*TRA-! ',$@W7E,$8!"#2D$U9F&1I&-JI
MH94:/D#=:^(I=1HEF:]16V26X@I3IA5W11U9J2,+]8T L35 _$#9L0'ZE,),
M/UH6512$6JS"H@)^$MWXJQ(K<V)ACC7FQ,@#8*+!K$S14QA$J89LJJ((9';@
MU J<6H"UT[!,C2SZL?JOHKBGN,+,K)B9!5-KQC)[I*^FR-974W6[KV+@6;^I
M_@/'=Q!-/P]/B0\TG)5-9A[SPB:[.N<]MS<9"S6F!S5RF;,EIX;+K^O$.H[U
MET".%<V^E.->C9O/,/U=X0>BA[)ASH9P,;34:-D3PK&@])\%WU%<3\9-A?=<
M+A.QIOV,[C><M,/]PQLO0?D_4$L#!!0    ( $Q:6E 9Z\>3E@(  #T)   9
M    >&PO=V]R:W-H965T<R]S:&5E=#<S+GAM;(U6VXZ;,!#]%<0'+-C<5R12
M+JI:J96BK;I]=A(GH 5,;2=L_[ZV(2PQDU5?P#9GSCDSC&SG'>-OHJ!4.N]U
MU8B%6TC9/GN>.!2T)N*)M;117TZ,UT2J*3][HN64'$U077G8]V.O)F7C+G.S
MMN/+G%UD539TQQUQJ6O"_ZYIQ;J%B]S;PDMY+J1>\)9Y2\[T)Y6_VAU7,V]D
M.98U;43)&H?3T\)=H><MPCK (%Y+VHG)V-&I[!E[TY-OQX7K:T>TH@>I*8AZ
M7>F&5I5F4C[^#*3NJ*D#I^,;^Q>3O$IF3P3=L.IW>93%PDU=YTA/Y%+)%]9]
MI4-"D>L,V7^G5UHIN':B- ZL$N;I'"Y"LGI@459J\MZ_R\:\NX'_%@8'X"$
MCP$H_C0@& *"CX#PTX!P" BM *]/Q=1F2R19YIQU#N]_;TMT%Z'G4%7_H!=-
ML<TW51ZA5J_+.,MR[ZJ)!LRZQ^ )!HT(3[&/$AB26.-9.+X7V,P1L079SB'(
M3V$7 9AH8 C""4'B^U:B/28RF*872:(@M=P"J,B/$\OP'(5Q'"6PY1"T' *6
MD649PMCEA3"!91?"A+#9"#0; 02191;"Q+!(#(K$ (%5^#6$L7_A?V"V$":#
MS2:@V61.@.R.2V9=D@63MKQ324&5%%"QFR2=J<31(Y4,5,D %:O-UG-,.&G%
M.Q'DPYN1#\@$]FX$@1ZT*GJPZ2& PF[6 32M6HI#NY, 5)P]JBT"-\@5PH"=
MV+:#9T)AE,WL "@_L[BV$ H'@67:FYPA->5G<SX+Y\ NC=1;\61UO .LS!7
M6E_KNX$YFSYH^HO%#\+/92.</9/JA#/GT(DQ295)_TG9*]1=9IQ4]"3U,%%C
MWA_H_42R=KBL>..-:?D/4$L#!!0    ( $Q:6E $GY"U)@(   ,&   9
M>&PO=V]R:W-H965T<R]S:&5E=#<T+GAM;'U4T8Z;,!#\%<0'G#$8 E&"=$E4
MM5(K15>U?7;()J SF-I.N/Y];4,XSJ![P?8R,SN[X-UT7+S*$D!Y;S5KY-8O
ME6K7",FBA)K*)]Y"H]]<N*BITD=Q1;(50,^65#,4!D&":EHU?KZQL:/(-_RF
M6-7 47CR5M=4_-L!X]W6Q_XC\%)=2V4"*-^T] H_0?UJCT*?T*ARKFIH9,4;
M3\!EZS_C]2$V> OX74$G)WO/5'+B_-4<OIVW?F , 8-"&06JESOL@3$CI&W\
M'33],:4A3O</]2^V=EW+B4K8<_:G.JMRZZ>^=X8+O3'UPKNO,-03^]Y0_'>X
M ]-PXT3G*#B3]ND5-ZEX/:AH*S5]Z]>JL6LWZ#]HRX1P((0C 2>?$J*!$+T3
MR*<$,A"(0T!]*;8W!ZIHOA&\\T3_=5MJ?B*\)KK[A0G:9MMWNCU21^_Y"J\V
MZ&Z$!LRNQX03#!X12*N/*<*E%+MP1@\_)MC/$8D#.<PA.$B7742+A496@'PH
M-'4*[3&QQ30]AJ0$.V[GJ!2G6>08GJ.2+ NS9<MDT3)9L)PYEGM,,DT3Q6Y_
MYZ!L->OP'$3B(%GV&R_ZC6=^<1@X?N.%YF&W>?LY*L-)'#N.YZ@5(5'L6$:3
MJU"#N-HQ([V"WQIE_JA)=)QDSZ&Y2DY\IR=</Y#>9?KQ^(.*:]5([\25OJCV
M.ETX5Z!-!D_:7ZDG\GA@<%%FN])[T<^E_J!X.XQ<-,[]_#]02P,$%     @
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
MJ[S(TL@MB:FQ4V77_PUVYTZK:LQB4"KQ-ER+NK]>Q_SO87A ,@8DMP!(_QM
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
M@(X%,)H$[3 L8)J H2SG))_8!6"4L6*R;9LY+*64%@AV34'7=.8ZY0068*
MNR)VA\G^%QN 0;'GL(]B9Z#K;.::<PX+<%" 7Q&;SXUFB" VB0W &&+I!+:9
MPTB6HCR#7>>@ZQR(_<XA+T"!XHK8Q<QH3O)9:@"%\KR8A)ZC.,*,PI8Q@CL0
M E(7[TB\T\3P%;E[T/C_B!G'TU,.P2CFTWX$P3!ATU.>C/IP+?4AW'$FVJI3
M8WT[&U6'>_2.^#X^J:_]_1KZ^YM,=SE_$_I0-B9Z4M;=$J&7[Y6RTKE$-\[?
MT;T/#)-*[JT?<C?6W:783:QJ^PL_&=XZ5G\!4$L#!!0    ( $Q:6E#.^Z2;
M8 (  ($'   9    >&PO=V]R:W-H965T<R]S:&5E=#@P+GAM;(U578^;,!#\
M*XCWGL%\F8@@78*J5FJEZ*JVST[B!'2 J>V$Z[^O;0A'C7/*2VPOL^.9M>/-
M>LI>>4F(<-Z:NN5KMQ2B6P' #R5I,'^B'6GEEQ-E#19RR<Z =XS@HTYJ:@ ]
M+P8-KEHWSW1LQ_*,7D1=M63'''YI&LS^;DA-^[7KN[? 2W4NA0J /.OPF?P@
MXF>W8W(%)I9CU9"65[1U&#FMW6=_5:0*KP&_*M+SV=Q13O:4OJK%U^/:]90@
M4I.#4 Q8#E>R)76MB*2,/R.G.VVI$N?S&_MG[5UZV6-.MK3^71U%N7:1ZQS)
M"5]J\4+[+V3T$[G.:/X;N9):PI42N<>!UES_.H<+%[096:24!K\-8]7JL1_Y
M;VGV!#@FP"G!CS],",:$X#TA_# A'!-"(P$,5G1M"BQPGC':.VPXW0ZK2^2O
M0EG]@PKJ8NMOLCQ<1J]Y@KP,7!71B-D,&#C#^!,"2/9I"VC;8@,7Z?#_#;9+
M1&Q BB7$]Y!=16 U&FB"<$[@(\/H@(DTIAV*D:(H-M0N40BAU. J+%P0PM@N
M.;1*#A>2DR2Q$T16@N@!SP,FGNF4A8W2T#!M@?E1XAM7I5C"TC2*[UR7V"HZ
MMKB^<]*)E2!YP'6RM!-YL^(.IBVH. D-5&%!P22]<]+(*ADM/:,[14NM!.D#
MGM/%C?P4!LB/#--66!29KFTPSP],U6#V$#6$G?4CSYT#O;1"_9]GT:F//$/U
MD!GQC>PO0SMXIQF:TW?,SE7+G3T5\IG4C]F)4D&D2N])"BQE/YP6-3D)-4WD
MG U=85@(VHT-#TQ=-_\'4$L#!!0    ( $Q:6E"=:<#H, (  .T&   9
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
MK;(:*7X$EHIE4=#!4M?<%FF92&586/*N6LS'FV:\+#?,5CQ@<;%R&C(LM[C
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
M61S $_DOWYER7K"NW$^#1&D)>%\:R9;8MU-T$&IG(&TR4R27QJ0HAI,SV8-
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
M$B3B"7T98:$$2V?9)(?3-8(C,XJ\9()G*&X(+T_]# YY^ +[!DOE6+P MA\
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
M-HMELH.AWBZ::^+['/B VR+T"(\NM.!CE[O#'#AE]5Q3JD R*1D9#GQ/2V)
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
MY+,7%ABQ&HTT[V(/@7:3:0Q_8RB'"(28XJ@8@4J);E%$NEE(<;$I@MQ$'B(
M1\6(0(2\=Q4+?O,I*P4BHN04VC7ET5YBH3%,*H=_015!_)0H/F2&["YOB.&%
M 5-\NUPP2 C$M&?!D2Y*!96BFF\7S)&F7*\H2Y5$[0,^7B(N+LG.]8*N;;\E
ME?H\V(<=P$QTA7+\&W,;,=9>&?8S#PB51R1G?IKC!*:P E.,A,&!C"5*]5C(
M'2*C1X=1^P*]#/,L\XL\I92:.6(E)_@Q2Z;P,1B]8J()77+#M.!1W5W^ON@#
MSIM0]2%4F<0P@"*#S0944 ")9N%(3/*^_9SZ05(0+#(!0><$_(>]1[?;:4AS
MPP4O92(W+ T-K2.H$"+Y@2+TO.#S]0S1[,C+D\#"$2$WD9U\QH#1Z<>0_1C;
MJ1,Q2^P2@:!+9*H@N0-YO2/:,,YRE5 _=@+5&[1BLDM];ED]E?G"8;;?*GY,
MI^@.=3P!ZPQH=*K;5U](:*S./Q=V<-!%21:%G\?9R&5GA?T>!/Q7)0VP^#%/
M!4A6W[ ; J,)PW#T5@-7HJ%VG5+]N2*,$C=:TC"Y1%L+LTX,/D\C(JQ^3]#W
M._2+5(7B81[[,6Q Y@$ERIXDF#B51WF2ZY,>YA@"I\Z ,7*/!7("X_XF,GL#
M@3ECE'TLH GD;WIELF-N.9JHAH6M^2AQHIB_++7<P]_\>)Z2[#(ZV:[*[1P/
MY>?B7$/NGV<4(0N?$"<^3M2]G>)N#S!=$9[+UBV86;5;R\W$/B>%K.A)]A+.
MRZ0#9^UZ*8BE2XZ4:V7SP;*%5K8P@TJB&-WER9<]Y]_S7&3XY=\Z=_8H1J]R
M[2^7>;(8(3GEOYP6Y:46UI7[*7GHBY9@MZ>1;(E]&YKPUW3YPN]$S#5[6M)D
MDS?P8VY"K']B%]H(V]ZG[!_7#6VP#BQ(C2P@J66/(DH#'C; LVMTF&7=PY$Y
M0:0!R1NLS[UT*X)C%Q1.<9)&+-MV$L3=PX0#+24%0@1/8+--XM%[].M"M0=S
MNH),SPP;$6S%DX@PJ&&YV;> ,+H3@JP8>XAR$4\"Q%\@VQXZS0%C3K$D1=F/
M^1>>!)I>".0+JW))(&$!)?JF/\\IRS8]0)20YQ[^&_&W+LW+1(K6B J$!(XX
M)##+,!JQQP6!:Z/\COEG<+PY5'1FOX"DE(D!\O20QIGZ19;(IY&?9HAQ@IFM
M0T2ZA:X6- &YC+'JGX;/$*(YI]34B."4!0*A)<X*%GS"?TQX]@F4Z.&0-*7C
M_7<1:(P,[D^C/6XF?B).]TH:_&V-"/1"4+;@'"#T0ODQZC[&B$X3QB,.5YB
MW'"%EDX&%X"+(":VNU^PAHW)&;6>&!@BW>%Z@W(C@?/<AT17WA=;C[]'5QP?
M448F_OR28#F/G-3=6)=&>GB10)S]C?C?V/5\U!D/3GGXE].#>_2N654/(NWJ
M<DONZ3=;:!:%P!SV@N#T8TJ65,@L\F.)X3-<S+X^& YN=>-VK@[Y@:K.GX9+
M\%,M2'_Z3Z6S -U$?>KRD_](%E/E ;/(J(CRNY/.H["-H"$\D3UCWYA?)E=B
M0/L^WZC9)8E'/!1Y-2I38<1:6VY7-:4'5U\( \(Z!>X8,X89A9@Z>;G$["(H
M?9:H8X%R7X2$PT.?1F=X4T8.PQ4'NR%'[N_)UYQ_(>@]4+"BB-AXA[6U(\\V
M2M<1(: P""MXG.13 ^O3V W??#G"C-):,_H]R1D6'P;G@AKC7I$8C24H79T4
M>(S UVP:#RT('BD%K/D)/R?]9#K=<\)!@ MR DO"TP^89A[OF/-I@*8>06.8
M/^TY>QK ^&R^L,(-^ZQS/+]^T++<O!/[#A,J/,7F^R=- ._D6,.9X+_1A+$M
M\VLN]V^?RWV/+.Q[Z:.*Y[FP>'Q3VOBG3U\^E W:/>/#::%]=I@ BZ,\'[_H
M;<:O*4'_$5."#FU9*S%ATB!?SR3J>PH6IA+0^L3DU;]/^G?/!'KPWF?+Y6-X
M+LLV=>0"_9KS\]><G\Z<GT=392\#)$M8>22%_IHR\Y\M9>;!9&/DK,1U-1[B
MA<*W8'B_)J'\-0DE)J$<$I_>-V1@0 +N< XY2;/\D]^4+G_-_?AOF?OQ2(%^
M*!_D/Y9\_R^6SW$OXTDON9:XM^F[SSS95?\_7\JYH=EC<_;(6\)_XI1OO^;J
MLN;J<F1.]>66>O [Z__3;*U_[21YN_?@%24W9:ZJ2EJZI[ME_D89\QZ7YLW)
MXFW@A-[)6\JKM7-&CC3#_IKE[!\FR]E^2<[VO%U1)U2-<9;I:'#7B<7_10W_
MWSBAU="TZ)B<2GHX(0R<O!3)BG[1*?FWS'4U&-<@X>6412+^^U'/R7$\6_PU
MW]6O^:YZ^:Z&*%)F7<*Q'ZMO[7E7_6L*K'^G%%A#5/=)32:$E/=2)!/ZV, 8
M8-NBN>9)/"=^S4"T,P.1-9N/4QZS9\I 9XL?NW0SIS"J7U;6^)=,X&'H\AU:
M%.?5YK0_C9;YKYZJPYA:(PG'J9KU8M?$?Z3T2K\LQ?_+I@TQUF8P(<@_P$K\
M:R0LZ:QVER)'E2L$5D-W>/650^-TN Y/R)7^I3 %[ =P1#EBELN2X2/O3-9R
M7FW*>M'25&[+!9IZ/EV>DT/%,S0:7XEI,5O[/)%@)_T??RI7$R_@!L:A'W,S
MBT$'="1]B"\EQM)[Q#;FQE\NI@P!A'&;Q>'H6;0.AMNVL/X"#^+QV#+^&^-.
MWC,EEVX!1+RVHRK#@/Z1\'6;&X)CHF/!F!EFKT.%OXO3-T!E>#X.7+H+;J*[
M@>.'*38[>Z&8\:W=5IJZ1#\>NA'_=$^^=QCE.PXBYS[?\6XR#@KYKO<_P'OY
MS87$;W RD,$(>UN /OKTJI'4I$ S?<0Q\(-KX1'> K2_]=YPM!B$:(6/R+_,
M1C@$KVLL.V"XE6#2_IL"H[?__!V_WG"U&-M?&PPY'.Q(M%\_@ "4@ A'YRPO
M?6 (T*\E O2I'EJQ?TV2^1SU-H99(%R4&E7Q1HUM<-4%.H1]@LJO@PO5_WVO
M"13(V7M4=N3$3O=NX(#YWK_71R^#B8ET]$%I1:_2P:L(#XJ#NI]2QE=FRC O
MOYC+/1IHV& N&8!B"T?DPL6[H&YF%S@1%@*\G/$L*3'V?%.Q>AUW3FB\WIPO
M%^.'!7U,Q<::CCTW:I58[X/7^84YB7WLIA/@X[#N\.VYL[,Z@M/):T0MFVTW
M[A=4,"<HOJH0[=)=7(5V<I5AELP+AI[IWBN?WK^Y>G7N75Z=7KVZ-%1A)@>[
MWOWI].+TO76A=D$_C3G'D"MG8CKU7N>04=:%_5X $<$*DZ.AOV.U#P)>0OV"
M/3<L8#LQE0;>/1!6::"F77!&1S,_%:LDZ__8(?$/2_0,'N(]P4/L%/,TR!NE
M!>%TAA;B<W;1@A(+$Y)-_L5Q5[B@LW!A*PPAACB.+2_SF&?=?C*F,AX=J'J_
M&7"P<,W*X-"25,/#06*Q%6BH@W%$A83-+]!IC89F=8SGE*N(I<-[5'/R^&C6
MS*7D^'9U#0-%*[YKW?2HZHJR],YZ)1+)1PV)Y##=QH(C5BJ@,;N0Q'P7H(C1
M_<PNAQFCVF?_&B^];U8"@^948-#LD-?<#&Q,E_!==K/.5Y?B0 0>MTH/* M0
MGPZ7!/H@:H;EW8)I9@S("B!F/Z$-H!F#@=H@UNR%+-AHMJ[MJ$LZ0EI_&.Z!
M'>WLX 7_).#&'+AGZK+VB&]_$]A!"&1''Z*GO3Q/EG/(+H7CC_IQ@/H',$74
MKG3CA1(H!/(T/$#I:B&3'KZK8?]OFI5Y2/3;:-V-Z&ZBHD;'$1PECF/RR!;W
MXYT8Y$X1:#PSUJGT[G.80!R2@>2RCZ,9$'+O6*8LH(\SD:?E5.9IZ6[J#V92
MG6@D(-%+F4Y*N]+NT,E=51@P=;M?L;7*/0'=+Q\Z=Z[\1%<PIX^:.L1ULZB\
M5I@W"_<T%"@5! [O* SY7$;,CX4(:$'+<QR-1KRTFKYNW0'-61M.N,P:\\V(
M%_SS\L'""@\[K8=*P^&_RRRYNX(=YC(FDEQRB#I7*8<MSG(OT5\.9Y6YH\K#
M!#]NEO6*'<NRH]H]9GJ/&G9,M</R?.AF5C#FN,6FLL/-';&A,7+ \BRT/(LL
MSV++L\2@.(EE9Q=[AD'MK+,W!&6G_<)  C7D-PW KC0@[-0Y5-'ONG('2TMJ
M-6]6L(%:7^+4.:W:+@RZ_2MW7TBYWXF']0PW1-W8N\2<BASE&/4K&;KEP+0[
M7+G00,Z,HZ2'>3;P.X- <T^*:?%:_>Q=(=K8N4 ;<UH$+V%72R2U4T12JRG/
M@0;4Y^8YTC]JWS>@07XKCY..M]L;3'3G76ZO,<BP)9U@_^8E]MT%8M_YH(MN
MN(4>YHU9[@5L(GUXI22^/YIRA-<=;%8#P+#?=1?@VN'DY$!1LQ7;B:5F9VQ6
M3#7K[ PAJ>U2GMZQU%H6 Z2:.]>J)NUJ>]R+B=C1Q?WG'F^G3+7$!<1FRH16
M)#:GL&(%8C.Z9$5B,^NT@[$-R<2#KD76)>DAIFGH:8??SJC89H:(K$.;V>E8
M(IP9HW1"G)E704Z,,_L,(.(F/[GAR/UPO:AO'VV2[XZDMYBJ$QU6*.IA:'>$
MZ%8DKRJX@S4Y(=A[D@3AR<\(8[VI>: K T\3,L..+:O@F_,Q#97)]R@S=901
MXJ_ I[GI1BE, ;]OMFN\).4J[E4#X_=>P4J0? I?+S#9+*)X;C 4!\?^!QJN
MJRU^9RO\<Y0V6ZSN]#/,IISC3Y3:[1SSU-*1OV))+G 3J<M@*@AVXXFU(@98
M(.3XT]4*SQ2U!$.]$+WT\=O,PFH0:BLP(D0&FN0U4II<U,3@%_1;TTHR8X<A
MIO!@'(VL[*0[# IX[+FBXD)H-:J&-#BF!_ C% %=@8A0KJK.!3X"1G49NJEM
MKI^@5Q^Z;C"LI+;S)2,]%Z1_O/JTRHA/V;X&1+4G6!1&*O]B??H%YT(!M7K4
M7 B[P538#3*KV>";=?T7G#(.7:;0KENU>75Y<3'@*?'H3LGP>/(!8@H NWKR
MT;&J(H7ZW++)P]2VRX>!9V2%=KNZZ_;Y"8;9NU5CP<3DL8']=!X;N760E\R#
M@;E-^JS9UK<WKX*<,2V%(P1MURY?WN$Y-+:8.33>/_&#,<]/,)]<*.D:(]&
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
MG#G]]9,LOR0>Z]:L&\V7Z.XYW7./7IQ36.D-@_L"0*.&,U%%N-"Z?.]Y55(
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
M7V\%>BM?;P5Z*U_O"/2.?+TCT#OR]8Y [\C7.P*](U_O"/2.?+TCT#OR]8Y
M[[C"64%T6)"O=P1Z1[[>$>@=^7HGH'?BZYV WHFO=P)Z)[[>">B=^'JGF=ZE
MJ8=\^#X.Y_94[EWRS_!/:V9PE_']DN^?<9OZZ?HSI<=IE6QNGW?_\]ZF_HDP
M\XKR_!M02P,$%     @ 3%I:4&:I6ULM @  ,3   !,   !;0V]N=&5N=%]4
M>7!E<UTN>&ULS=O?;ILP% ;P5XFXG8+C_VQJ>M/N=JNTO8 ')P$%,++=+GW[
M&=I.6I5)K9I(WTT(''/.![%^=[GZ^3A17!V'?HS;HDUI^L)8K%L:7"S]1&.N
M['P87,JG8<\F5Q_<GIC8; RK_9AH3.LT]RBNKVYIY^[[M+IYNCZWWA9NFOJN
M=JGS(WL8FU=-U\\-RT#]LB:VW10_Y07%ZNLQ=XGYVK;(U5BP-TQX?>-\GN_[
M_D A= V]*YK?[;J:&E_?#_F6,DZ!7!-;HC3T96Q=H.9'"MVX?\Y[YT+ZYH;<
MF!U[]L^"\G(YTF-/IP,LE7-.3GE;T*E12^'IDW]HX,MNJ'V@]11R-:3NQ./E
M2'>Y&MF\\)R/2//6::AYT_#<^G(_[&\?#LOW4R_\;S&RY?"QMWZ^' (DAP3)
MH4!R:) <!B2'!<E1@>3X#)*#;U""H(C*44CE**9R%%0YBJH<A56.XBI'@96C
MR"I09!4HL@H4606*K )%5H$BJT"15:#(*E!D%2BR2A19)8JL$D56B2*K1)%5
MHL@J4625*+)*%%DEBJP*15:%(JM"D56AR*I09%4HLBH4616*K I%5H4BJT:1
M5:/(JE%DU2BR:A19-8JL&D56C2*K1I%5H\AJ4&0U*+(:%%D-BJP&15:#(JM!
MD=6@R&I09#4HLEH462V*K!9%5HLBJT61U:+(:E%DM2BR6A19+8JL%8JL%8JL
M%8JLU05E78[EX+KQ?TE^>7]XF<^6?PI<_P%02P$"% ,4    " !+6EI0'R//
M \     3 @  "P              @ $     7W)E;',O+G)E;'-02P$"% ,4
M    " !+6EI0)^B'#H(   "Q    $               @ 'I    9&]C4')O
M<',O87!P+GAM;%!+ 0(4 Q0    ( $M:6E#PZP C[@   "L"   1
M      "  9D!  !D;V-0<F]P<R]C;W)E+GAM;%!+ 0(4 Q0    ( $M:6E"9
M7)PC$ 8  )PG   3              "  ;8"  !X;"]T:&5M92]T:&5M93$N
M>&UL4$L! A0#%     @ 2UI:4"L&_6UQ P  R!   !@              ( !
M]P@  'AL+W=O<FMS:&5E=',O<VAE970Q+GAM;%!+ 0(4 Q0    ( $M:6E!:
MCVU1500   45   8              "  9X,  !X;"]W;W)K<VAE971S+W-H
M965T,BYX;6Q02P$"% ,4    " !+6EI0<<-4M4D"   #"   &
M    @ $I$0  >&PO=V]R:W-H965T<R]S:&5E=#,N>&UL4$L! A0#%     @
M2UI:4(W8850I!   (Q(  !@              ( !J!,  'AL+W=O<FMS:&5E
M=',O<VAE970T+GAM;%!+ 0(4 Q0    ( $M:6E#+&G:Y"0<  -8M   8
M          "  0<8  !X;"]W;W)K<VAE971S+W-H965T-2YX;6Q02P$"% ,4
M    " !+6EI0Q>UW%J,%  !Z'0  &               @ %&'P  >&PO=V]R
M:W-H965T<R]S:&5E=#8N>&UL4$L! A0#%     @ 2UI:4*]X+96R 0  T@,
M !@              ( !'R4  'AL+W=O<FMS:&5E=',O<VAE970W+GAM;%!+
M 0(4 Q0    ( $M:6E!4FU%0M@$  -(#   8              "  0<G  !X
M;"]W;W)K<VAE971S+W-H965T."YX;6Q02P$"% ,4    " !+6EI03D_F^;8!
M  #2 P  &               @ 'S*   >&PO=V]R:W-H965T<R]S:&5E=#DN
M>&UL4$L! A0#%     @ 2UI:4&-LDTNW 0  T@,  !D              ( !
MWRH  'AL+W=O<FMS:&5E=',O<VAE970Q,"YX;6Q02P$"% ,4    " !+6EI0
M"=TL@+@!  #2 P  &0              @ '-+   >&PO=V]R:W-H965T<R]S
M:&5E=#$Q+GAM;%!+ 0(4 Q0    ( $M:6E"'1:>RN $  -(#   9
M      "  ;PN  !X;"]W;W)K<VAE971S+W-H965T,3(N>&UL4$L! A0#%
M  @ 2UI:4*5AF@^V 0  T@,  !D              ( !JS   'AL+W=O<FMS
M:&5E=',O<VAE970Q,RYX;6Q02P$"% ,4    " !+6EI0=OQLG;<!  #2 P
M&0              @ &8,@  >&PO=V]R:W-H965T<R]S:&5E=#$T+GAM;%!+
M 0(4 Q0    ( $M:6E"&G[E'N $  -(#   9              "  88T  !X
M;"]W;W)K<VAE971S+W-H965T,34N>&UL4$L! A0#%     @ 2UI:4#5QPLJV
M 0  T@,  !D              ( !=38  'AL+W=O<FMS:&5E=',O<VAE970Q
M-BYX;6Q02P$"% ,4    " !+6EI0[_1VV[<!  #2 P  &0
M@ %B.   >&PO=V]R:W-H965T<R]S:&5E=#$W+GAM;%!+ 0(4 Q0    ( $M:
M6E #""+XMP$  -(#   9              "  5 Z  !X;"]W;W)K<VAE971S
M+W-H965T,3@N>&UL4$L! A0#%     @ 2UI:4$T;Q6ZV 0  T@,  !D
M         ( !/CP  'AL+W=O<FMS:&5E=',O<VAE970Q.2YX;6Q02P$"% ,4
M    " !+6EI0H0<B1+<!  #2 P  &0              @ $K/@  >&PO=V]R
M:W-H965T<R]S:&5E=#(P+GAM;%!+ 0(4 Q0    ( $M:6E#=/2]MN $  -(#
M   9              "  1E   !X;"]W;W)K<VAE971S+W-H965T,C$N>&UL
M4$L! A0#%     @ 2UI:4"3%_-ZX 0  T@,  !D              ( !"$(
M 'AL+W=O<FMS:&5E=',O<VAE970R,BYX;6Q02P$"% ,4    " !+6EI0A\0K
M)+4!  #2 P  &0              @ 'W0P  >&PO=V]R:W-H965T<R]S:&5E
M=#(S+GAM;%!+ 0(4 Q0    ( $M:6E!S\6TYMP$  -(#   9
M  "  >-%  !X;"]W;W)K<VAE971S+W-H965T,C0N>&UL4$L! A0#%     @
M2UI:4"7V="*W 0  T@,  !D              ( !T4<  'AL+W=O<FMS:&5E
M=',O<VAE970R-2YX;6Q02P$"% ,4    " !+6EI0*2^^Z; "  !\"P  &0
M            @ &_20  >&PO=V]R:W-H965T<R]S:&5E=#(V+GAM;%!+ 0(4
M Q0    ( $M:6E#- GM7MP$  -(#   9              "  :9,  !X;"]W
M;W)K<VAE971S+W-H965T,C<N>&UL4$L! A0#%     @ 2UI:4&"[CM&W 0
MT@,  !D              ( !E$X  'AL+W=O<FMS:&5E=',O<VAE970R."YX
M;6Q02P$"% ,4    " !+6EI0^_''U\(!   W!   &0              @ &"
M4   >&PO=V]R:W-H965T<R]S:&5E=#(Y+GAM;%!+ 0(4 Q0    ( $M:6E R
MJWPNSP$  )P$   9              "  7M2  !X;"]W;W)K<VAE971S+W-H
M965T,S N>&UL4$L! A0#%     @ 2UI:4)EO$Z:V 0  T@,  !D
M     ( !@50  'AL+W=O<FMS:&5E=',O<VAE970S,2YX;6Q02P$"% ,4
M" !+6EI0RY7E9L0!   W!   &0              @ %N5@  >&PO=V]R:W-H
M965T<R]S:&5E=#,R+GAM;%!+ 0(4 Q0    ( $M:6E!.>_4;M@$  -(#   9
M              "  6E8  !X;"]W;W)K<VAE971S+W-H965T,S,N>&UL4$L!
M A0#%     @ 2UI:4/)#'9^V 0  T@,  !D              ( !5EH  'AL
M+W=O<FMS:&5E=',O<VAE970S-"YX;6Q02P$"% ,4    " !+6EI0-0*6"@0"
M   T!@  &0              @ %#7   >&PO=V]R:W-H965T<R]S:&5E=#,U
M+GAM;%!+ 0(4 Q0    ( $M:6E"YR)NXW@$   $%   9              "
M 7Y>  !X;"]W;W)K<VAE971S+W-H965T,S8N>&UL4$L! A0#%     @ 2UI:
M4 *@EGRW 0  T@,  !D              ( !DV   'AL+W=O<FMS:&5E=',O
M<VAE970S-RYX;6Q02P$"% ,4    " !+6EI0,U*_B^X!  !F!0  &0
M        @ &!8@  >&PO=V]R:W-H965T<R]S:&5E=#,X+GAM;%!+ 0(4 Q0
M   ( $M:6E#"56G!_ $  .P%   9              "  :9D  !X;"]W;W)K
M<VAE971S+W-H965T,SDN>&UL4$L! A0#%     @ 2UI:4"PTNZ?Q P  :A0
M !D              ( !V68  'AL+W=O<FMS:&5E=',O<VAE970T,"YX;6Q0
M2P$"% ,4    " !+6EI0"[$/O.0"  "L"@  &0              @ $!:P
M>&PO=V]R:W-H965T<R]S:&5E=#0Q+GAM;%!+ 0(4 Q0    ( $M:6E!L8]E3
M90,  ,T.   9              "  1QN  !X;"]W;W)K<VAE971S+W-H965T
M-#(N>&UL4$L! A0#%     @ 2UI:4&\35%*- @  +@@  !D
M ( !N'$  'AL+W=O<FMS:&5E=',O<VAE970T,RYX;6Q02P$"% ,4    " !+
M6EI06L2PBZ$#  #H$   &0              @ %\=   >&PO=V]R:W-H965T
M<R]S:&5E=#0T+GAM;%!+ 0(4 Q0    ( $M:6E 27#G!!@,  $ ,   9
M          "  51X  !X;"]W;W)K<VAE971S+W-H965T-#4N>&UL4$L! A0#
M%     @ 3%I:4)=M]G?P 0  MP0  !D              ( !D7L  'AL+W=O
M<FMS:&5E=',O<VAE970T-BYX;6Q02P$"% ,4    " !,6EI0;?7R7H("  "=
M"   &0              @ &X?0  >&PO=V]R:W-H965T<R]S:&5E=#0W+GAM
M;%!+ 0(4 Q0    ( $Q:6E!R181JLP(  /0*   9              "  7&
M  !X;"]W;W)K<VAE971S+W-H965T-#@N>&UL4$L! A0#%     @ 3%I:4,&!
MOAN?!   Q1@  !D              ( !6X,  'AL+W=O<FMS:&5E=',O<VAE
M970T.2YX;6Q02P$"% ,4    " !,6EI069W*R08"  #W!0  &0
M    @ $QB   >&PO=V]R:W-H965T<R]S:&5E=#4P+GAM;%!+ 0(4 Q0    (
M $Q:6E!N/U)%%0(  /H&   9              "  6Z*  !X;"]W;W)K<VAE
M971S+W-H965T-3$N>&UL4$L! A0#%     @ 3%I:4$[M. 5K P  Z1   !D
M             ( !NHP  'AL+W=O<FMS:&5E=',O<VAE970U,BYX;6Q02P$"
M% ,4    " !,6EI09E3UQ<T!  !A!   &0              @ %<D   >&PO
M=V]R:W-H965T<R]S:&5E=#4S+GAM;%!+ 0(4 Q0    ( $Q:6E"AE"??Y $
M )L$   9              "  6"2  !X;"]W;W)K<VAE971S+W-H965T-30N
M>&UL4$L! A0#%     @ 3%I:4'>VDF^) @  @P@  !D              ( !
M>Y0  'AL+W=O<FMS:&5E=',O<VAE970U-2YX;6Q02P$"% ,4    " !,6EI0
M22!@S@0"  "_!0  &0              @ $[EP  >&PO=V]R:W-H965T<R]S
M:&5E=#4V+GAM;%!+ 0(4 Q0    ( $Q:6E#KPNG5HP$  (L#   9
M      "  7:9  !X;"]W;W)K<VAE971S+W-H965T-3<N>&UL4$L! A0#%
M  @ 3%I:4)HU07DY @  ^@8  !D              ( !4)L  'AL+W=O<FMS
M:&5E=',O<VAE970U."YX;6Q02P$"% ,4    " !,6EI0X6,*"L4#  !@$@
M&0              @ ' G0  >&PO=V]R:W-H965T<R]S:&5E=#4Y+GAM;%!+
M 0(4 Q0    ( $Q:6E"1RG)>P@(  %D*   9              "  ;RA  !X
M;"]W;W)K<VAE971S+W-H965T-C N>&UL4$L! A0#%     @ 3%I:4'5\!\,9
M P  , X  !D              ( !M:0  'AL+W=O<FMS:&5E=',O<VAE970V
M,2YX;6Q02P$"% ,4    " !,6EI0'@&&/C$#    #   &0
M@ $%J   >&PO=V]R:W-H965T<R]S:&5E=#8R+GAM;%!+ 0(4 Q0    ( $Q:
M6E!B.C(/ @0  (@2   9              "  6VK  !X;"]W;W)K<VAE971S
M+W-H965T-C,N>&UL4$L! A0#%     @ 3%I:4(HA0S,$ P  (@L  !D
M         ( !IJ\  'AL+W=O<FMS:&5E=',O<VAE970V-"YX;6Q02P$"% ,4
M    " !,6EI08B3+> 8#   '#   &0              @ 'AL@  >&PO=V]R
M:W-H965T<R]S:&5E=#8U+GAM;%!+ 0(4 Q0    ( $Q:6E!E7,')8P(  (,(
M   9              "  1ZV  !X;"]W;W)K<VAE971S+W-H965T-C8N>&UL
M4$L! A0#%     @ 3%I:4#J3_ZXW @  > <  !D              ( !N+@
M 'AL+W=O<FMS:&5E=',O<VAE970V-RYX;6Q02P$"% ,4    " !,6EI0*MTP
M*N,!   #!0  &0              @ $FNP  >&PO=V]R:W-H965T<R]S:&5E
M=#8X+GAM;%!+ 0(4 Q0    ( $Q:6E S%_U-(0(   X&   9
M  "  4"]  !X;"]W;W)K<VAE971S+W-H965T-CDN>&UL4$L! A0#%     @
M3%I:4-(.V(<9 @  3P8  !D              ( !F+\  'AL+W=O<FMS:&5E
M=',O<VAE970W,"YX;6Q02P$"% ,4    " !,6EI0-7!F0)D!  !\ P  &0
M            @ 'HP0  >&PO=V]R:W-H965T<R]S:&5E=#<Q+GAM;%!+ 0(4
M Q0    ( $Q:6E!O35ZGF (  ! )   9              "  ;C#  !X;"]W
M;W)K<VAE971S+W-H965T-S(N>&UL4$L! A0#%     @ 3%I:4!GKQY.6 @
M/0D  !D              ( !A\8  'AL+W=O<FMS:&5E=',O<VAE970W,RYX
M;6Q02P$"% ,4    " !,6EI0!)^0M28"   #!@  &0              @ %4
MR0  >&PO=V]R:W-H965T<R]S:&5E=#<T+GAM;%!+ 0(4 Q0    ( $Q:6E"3
M692<PP(    *   9              "  ;'+  !X;"]W;W)K<VAE971S+W-H
M965T-S4N>&UL4$L! A0#%     @ 3%I:4%MVIIC6 @  (PP  !D
M     ( !J\X  'AL+W=O<FMS:&5E=',O<VAE970W-BYX;6Q02P$"% ,4
M" !,6EI0J% $E.("  !&"P  &0              @ &XT0  >&PO=V]R:W-H
M965T<R]S:&5E=#<W+GAM;%!+ 0(4 Q0    ( $Q:6E#L-0&"* (  $D&   9
M              "  ='4  !X;"]W;W)K<VAE971S+W-H965T-S@N>&UL4$L!
M A0#%     @ 3%I:4/NDHJ%_ @  @0@  !D              ( !,-<  'AL
M+W=O<FMS:&5E=',O<VAE970W.2YX;6Q02P$"% ,4    " !,6EI0SONDFV "
M  "!!P  &0              @ 'FV0  >&PO=V]R:W-H965T<R]S:&5E=#@P
M+GAM;%!+ 0(4 Q0    ( $Q:6E"=:<#H, (  .T&   9              "
M 7W<  !X;"]W;W)K<VAE971S+W-H965T.#$N>&UL4$L! A0#%     @ 3%I:
M4+^T,BM: @  =@<  !D              ( !Y-X  'AL+W=O<FMS:&5E=',O
M<VAE970X,BYX;6Q02P$"% ,4    " !,6EI0VN+-'%D"  !U!P  &0
M        @ %UX0  >&PO=V]R:W-H965T<R]S:&5E=#@S+GAM;%!+ 0(4 Q0
M   ( $Q:6E!F>FJ?RT\  ,YO 0 4              "  07D  !X;"]S:&%R
M9613=')I;F=S+GAM;%!+ 0(4 Q0    ( $Q:6E $5_\\2@(  'X+   -
M          "  0(T 0!X;"]S='EL97,N>&UL4$L! A0#%     @ 3%I:4!87
M )7\!0  2S<   \              ( !=S8! 'AL+W=O<FMB;V]K+GAM;%!+
M 0(4 Q0    ( $Q:6E#Y R27D@(  (XQ   :              "  : \ 0!X
M;"]?<F5L<R]W;W)K8F]O:RYX;6PN<F5L<U!+ 0(4 Q0    ( $Q:6E!FJ5M;
M+0(  #$P   3              "  6H_ 0!;0V]N=&5N=%]4>7!E<UTN>&UL
64$L%!@    !< %P -AD  ,A! 0    $!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R46.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6764233728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Business Combinations - Unaudited Pro Forma Information (Details) - Rapid [Member] - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Dec. 31, 2016</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionsProFormaRevenue', window );">Revenue</a></td>
<td class="nump">$ 386,677<span></span>
</td>
<td class="nump">$ 336,634<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 55,070<span></span>
</td>
<td class="nump">$ 41,805<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionsProFormaRevenue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The pro forma revenue for a period as if the business combination or combinations had been completed at the beginning of the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionsProFormaRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission.  Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105.
var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0);
e.removeAttribute('id');a.parentNode.appendChild(e)}}
if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'}
e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>52
<FILENAME>R42.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6814871632">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue - Disaggregation of Revenue (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<span></span>
</td>
<td class="nump">$ 344,490<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember', window );">Injection Molding (Protomold) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">217,415<span></span>
</td>
<td class="nump">210,523<span></span>
</td>
<td class="nump">194,432<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember', window );">CNC Machining (Firstcut) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">155,473<span></span>
</td>
<td class="nump">153,521<span></span>
</td>
<td class="nump">103,739<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember', window );">3D Printing (Fineline) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">61,352<span></span>
</td>
<td class="nump">53,342<span></span>
</td>
<td class="nump">43,329<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_SheetMetalMember', window );">Sheet Metal [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">21,000<span></span>
</td>
<td class="nump">24,998<span></span>
</td>
<td class="nump">1,767<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_OtherProductsMember', window );">Other Products [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">3,488<span></span>
</td>
<td class="nump">3,212<span></span>
</td>
<td class="nump">1,223<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">360,205<span></span>
</td>
<td class="nump">350,535<span></span>
</td>
<td class="nump">263,086<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">82,805<span></span>
</td>
<td class="nump">80,889<span></span>
</td>
<td class="nump">70,154<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_JP', window );">JAPAN</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 15,718<span></span>
</td>
<td class="nump">$ 14,172<span></span>
</td>
<td class="nump">$ 11,250<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130545-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130543-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_SheetMetalMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_SheetMetalMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_OtherProductsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_OtherProductsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_JP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R69.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6669965632">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Leases - Lease Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseCost', window );">Operating lease cost</a></td>
<td class="nump">$ 976<span></span>
</td>
<td class="nump">$ 3,960<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_VariableLeaseCost', window );">Variable lease cost</a></td>
<td class="nump">228<span></span>
</td>
<td class="nump">1,039<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LeaseCost', window );">Total lease cost</a></td>
<td class="nump">$ 1,204<span></span>
</td>
<td class="nump">4,999<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeasePayments', window );">Operating cash flows from operating leases</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,020<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability', window );">Lease assets obtained in exchange for new operating lease liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,921<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lease cost recognized by lessee for lease contract.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeasePayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918643-209977<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeasePayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in right-of-use asset obtained in exchange for operating lease liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=77888399&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R4.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6829750608">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesAbstract', window );"><strong>Statements of Operations:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<span></span>
</td>
<td class="nump">$ 344,490<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of revenue</a></td>
<td class="nump">223,438<span></span>
</td>
<td class="nump">206,917<span></span>
</td>
<td class="nump">150,648<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">235,290<span></span>
</td>
<td class="nump">238,679<span></span>
</td>
<td class="nump">193,842<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingExpensesAbstract', window );"><strong>Operating expenses</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SellingAndMarketingExpense', window );">Marketing and sales</a></td>
<td class="nump">72,976<span></span>
</td>
<td class="nump">68,533<span></span>
</td>
<td class="nump">56,856<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpense', window );">Research and development</a></td>
<td class="nump">32,692<span></span>
</td>
<td class="nump">28,735<span></span>
</td>
<td class="nump">23,560<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GeneralAndAdministrativeExpense', window );">General and administrative</a></td>
<td class="nump">49,766<span></span>
</td>
<td class="nump">52,513<span></span>
</td>
<td class="nump">41,200<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingExpenses', window );">Total operating expenses</a></td>
<td class="nump">155,434<span></span>
</td>
<td class="nump">149,781<span></span>
</td>
<td class="nump">121,616<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">79,856<span></span>
</td>
<td class="nump">88,898<span></span>
</td>
<td class="nump">72,226<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherNonoperatingIncomeExpense', window );">Other income, net</a></td>
<td class="nump">1,337<span></span>
</td>
<td class="nump">2,757<span></span>
</td>
<td class="nump">2,209<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">81,193<span></span>
</td>
<td class="nump">91,655<span></span>
</td>
<td class="nump">74,435<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Provision for income taxes</a></td>
<td class="nump">17,538<span></span>
</td>
<td class="nump">15,067<span></span>
</td>
<td class="nump">22,657<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<span></span>
</td>
<td class="nump">$ 51,778<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Net income per share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 2.37<span></span>
</td>
<td class="nump">$ 2.84<span></span>
</td>
<td class="nump">$ 1.94<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 2.35<span></span>
</td>
<td class="nump">$ 2.81<span></span>
</td>
<td class="nump">$ 1.93<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract', window );"><strong>Shares used to compute net income per share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">26,866,985<span></span>
</td>
<td class="nump">26,982,614<span></span>
</td>
<td class="nump">26,647,610<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="nump">27,049,423<span></span>
</td>
<td class="nump">27,278,816<span></span>
</td>
<td class="nump">26,845,071<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other Comprehensive (Loss) Income, net of tax</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments</a></td>
<td class="nump">$ 1,474<span></span>
</td>
<td class="num">$ (3,258)<span></span>
</td>
<td class="nump">$ 5,519<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="nump">$ 65,129<span></span>
</td>
<td class="nump">$ 73,330<span></span>
</td>
<td class="nump">$ 57,297<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=d3e557-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1337-109256<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=117327953&amp;loc=d3e4984-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1252-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=SL5780133-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=117327953&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1252-109256<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1337-109256<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GeneralAndAdministrativeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GrossProfit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=68072869&amp;loc=d3e41242-110953<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109238882&amp;loc=d3e38679-109324<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpenses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpenses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpensesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpensesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669646-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -Subparagraph (b,c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherNonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchAndDevelopmentExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchAndDevelopmentExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130545-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130543-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenuesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenuesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SellingAndMarketingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate total amount of expenses directly related to the marketing or selling of products or services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SellingAndMarketingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=117326831&amp;loc=d3e1448-109256<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R61.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6751212128">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (Year)</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">1.59%<span></span>
</td>
<td class="nump">2.06%<span></span>
</td>
<td class="nump">0.97%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">42.63%<span></span>
</td>
<td class="nump">31.50%<span></span>
</td>
<td class="nump">24.49%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">2.35%<span></span>
</td>
<td class="nump">2.33%<span></span>
</td>
<td class="nump">1.48%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">53.57%<span></span>
</td>
<td class="nump">37.36%<span></span>
</td>
<td class="nump">34.51%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (Year)</a></td>
<td class="text">6 years 3 months<span></span>
</td>
<td class="text">6 years 3 months<span></span>
</td>
<td class="text">6 years 6 months<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 47.84<span></span>
</td>
<td class="nump">$ 50.08<span></span>
</td>
<td class="nump">$ 32.26<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">2.35%<span></span>
</td>
<td class="nump">2.52%<span></span>
</td>
<td class="nump">2.24%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">42.52%<span></span>
</td>
<td class="nump">41.68%<span></span>
</td>
<td class="nump">42.68%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">2.58%<span></span>
</td>
<td class="nump">3.07%<span></span>
</td>
<td class="nump">2.36%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">42.74%<span></span>
</td>
<td class="nump">42.22%<span></span>
</td>
<td class="nump">44.68%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=115993241&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R8.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820388928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SignificantAccountingPoliciesTextBlock', window );">Significant Accounting Policies [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">2</em> &#8212; Summary of Significant Accounting Policies</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#8220;Organization and business&#8221; above. All intercompany accounts and transactions have been eliminated in consolidation.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#8217; equity.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font-weight: inherit; font-style: normal;"> may </em>exceed federally insured limits. The Company has <em style="font-weight: inherit; font-style: normal;">not</em> experienced any losses on such accounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#8217;s maturity date. Securities with maturities of <em style="font-weight: inherit; font-style: normal;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. The Company reviews impairments associated with its marketable securities in accordance with the measurement guidance provided by ASC <em style="font-weight: inherit; font-style: normal;">320,</em> <i>Investments &#8211; Debt and Equity Securities,</i> when determining the classification of impairment as &#8220;temporary&#8221; or &#8220;other-than-temporary.&#8221; The factors used to differentiate between temporary and other-than-temporary include assessment of the quality of the security, credit ratings actions and management&#8217;s intent to hold the security to maturity as well as other factors.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font-weight: inherit; font-style: normal;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average cost method, which approximates <em style="font-weight: inherit; font-style: normal;">first</em>-in, <em style="font-weight: inherit; font-style: normal;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#8217;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets <em style="font-weight: inherit; font-style: normal;">not</em> in service are <em style="font-weight: inherit; font-style: normal;">not</em> depreciated until the asset is put into use.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#160;<em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, $32.7 million and $16.6 million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>were <em style="font-weight: inherit; font-style: normal;">$16.1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font-weight: inherit; font-style: normal;">350,</em> <i>Intangibles&#8212;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font-weight: inherit; font-style: normal;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font-weight: inherit; font-style: normal;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c56002302">two</span> to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#8217;s carrying value over its fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font-weight: inherit; font-style: normal;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2018, </em>the Company adopted&#160;ASC <em style="font-weight: inherit; font-style: normal;">606,</em> <i>Revenue from Contracts with Customers,</i>&#160;using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Prior to <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company recognized revenue when it was realized or realizable and earned when all of the following criteria were met: persuasive evidence of an arrangement existed, delivery had occurred or services had been rendered, the price to the buyer was fixed or determinable and collectability was reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in the Company&#8217;s Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal product lines.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
   <p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b/></i></p><p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">On <em style="font-weight: inherit; font-style: normal;"> January 1, 2019, </em>the Company adopted ASC <em style="font-weight: inherit; font-style: normal;">842,</em> <i>Leases</i>, which introduced the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"/></div></div><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font-weight: inherit; font-style: normal;">740,</em><i> Income Taxes</i> (ASC <em style="font-weight: inherit; font-style: normal;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;<em style="font-weight: inherit; font-style: normal;"> may </em><em style="font-weight: inherit; font-style: normal;">not</em> be recognized.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font-weight: inherit; font-style: normal;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#8217;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font-weight: inherit; font-style: normal;">not</em> criterion. Additionally, ASC <em style="font-weight: inherit; font-style: normal;">740</em> provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font-weight: inherit; font-style: normal;">718,</em><i> Compensation&#8212;Stock Compensation</i> (ASC <em style="font-weight: inherit; font-style: normal;">718</em>). Under the fair value recognition provisions of ASC <em style="font-weight: inherit; font-style: normal;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#8217;s awards are <em style="font-weight: inherit; font-style: normal;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $13.0&#160;million, $11.8 million and $10.7 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019,</em> <em style="font-weight: inherit; font-style: normal;">2018</em>&#160;and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC <em style="font-weight: inherit; font-style: normal;">350</em>-<em style="font-weight: inherit; font-style: normal;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $32.7&#160;million, $28.7 million and $23.6 million for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#8217; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Business combinations</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for business combinations in accordance with ASC <em style="font-weight: inherit; font-style: normal;">805,</em> <i>Business Combinations </i>(ASC <em style="font-weight: inherit; font-style: normal;">805</em>). On <em style="font-weight: inherit; font-style: normal;"> November 30, 2017, </em>the Company acquired&#160;RAPID Manufacturing Group, LLC (RAPID) for $122.0 million, consisting of $110.6 million in cash and $11.3 million in the Company&#8217;s common stock.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="text-align: center; width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <em style="font-weight: inherit; font-style: normal;"/></div></div><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b/></i></p><p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently adopted accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">fourth</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">04,</em> <i>Intangibles &#8211; Goodwill and Other, </i>which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had <em style="font-weight: inherit; font-style: normal;">no</em> material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">02,</em>&#160;<i>Leases&#160;</i>(ASC <em style="font-weight: inherit; font-style: normal;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font-weight: inherit; font-style: normal;">2018</em>-<em style="font-weight: inherit; font-style: normal;">11,</em>&#160;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font-weight: inherit; font-style: normal;">840,</em>&#160;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font-weight: inherit; font-style: normal;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#8217;s operating lease assets and liabilities on <em style="font-weight: inherit; font-style: normal;"> January 1, 2019 </em>of $13.1 million.</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted the FASB ASU <em style="font-weight: inherit; font-style: normal;">2014</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Revenue from Contracts with Customers </i>(ASC <em style="font-weight: inherit; font-style: normal;">606</em>). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. The Company adopted the new revenue standard using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have <em style="font-weight: inherit; font-style: normal;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#160;manufactured parts that meet these <em style="font-weight: inherit; font-style: normal;">two</em> criteria, the Company will recognize revenue over time. The transition adjustment recorded was an increase of $1.5 million&#160;to the Company's retained earnings balance&#160;as of&#160;<em style="font-weight: inherit; font-style: normal;"> January 1, 2018.</em></p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">During the <em style="font-weight: inherit; font-style: normal;">first</em> quarter of <em style="font-weight: inherit; font-style: normal;">2018,</em> the Company adopted ASU <em style="font-weight: inherit; font-style: normal;">2017</em>-<em style="font-weight: inherit; font-style: normal;">09,</em> <i>Compensation &#8211; Stock Compensation</i>, which is intended to provide clarity and reduce diversity in practice&#160;as well as&#160;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p>
   <p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"><i><b>Recently issued accounting pronouncements</b></i></p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> December 2019, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2019</em>-<em style="font-weight: inherit; font-style: normal;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font-weight: inherit; font-style: normal;">not</em> expect the impact to be material.</p>
   <p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;">In <em style="font-weight: inherit; font-style: normal;"> June 2016, </em>the FASB issued ASU <em style="font-weight: inherit; font-style: normal;">2016</em>-<em style="font-weight: inherit; font-style: normal;">13,</em> <i>Financial Instruments &#8211; Credit Losses, </i>which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after <em style="font-weight: inherit; font-style: normal;"> December 15, 2019 </em>and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated financial statements.</p><p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SignificantAccountingPoliciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for all significant accounting policies of the reporting entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -URI http://asc.fasb.org/topic&amp;trid=2122369<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SignificantAccountingPoliciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* Updated 2009-11-04 */
/* v2.2.0.24 */

/* DefRef Styles */
..report table.authRefData{
	background-color: #def;
	border: 2px solid #2F4497;
	font-size: 1em;
	position: absolute;
}

..report table.authRefData a {
	display: block;
	font-weight: bold;
}

..report table.authRefData p {
	margin-top: 0px;
}

..report table.authRefData .hide {
	background-color: #2F4497;
	padding: 1px 3px 0px 0px;
	text-align: right;
}

..report table.authRefData .hide a:hover {
	background-color: #2F4497;
}

..report table.authRefData .body {
	height: 150px;
	overflow: auto;
	width: 400px;
}

..report table.authRefData table{
	font-size: 1em;
}

/* Report Styles */
..pl a, .pl a:visited {
	color: black;
	text-decoration: none;
}

/* table */
..report {
	background-color: white;
	border: 2px solid #acf;
	clear: both;
	color: black;
	font: normal 8pt Helvetica, Arial, san-serif;
	margin-bottom: 2em;
}

..report hr {
	border: 1px solid #acf;
}

/* Top labels */
..report th {
	background-color: #acf;
	color: black;
	font-weight: bold;
	text-align: center;
}

..report th.void	{
	background-color: transparent;
	color: #000000;
	font: bold 10pt Helvetica, Arial, san-serif;
	text-align: left;
}

..report .pl {
	text-align: left;
	vertical-align: top;
	white-space: normal;
	width: 200px;
	white-space: normal; /* word-wrap: break-word; */
}

..report td.pl a.a {
	cursor: pointer;
	display: block;
	width: 200px;
	overflow: hidden;
}

..report td.pl div.a {
	width: 200px;
}

..report td.pl a:hover {
	background-color: #ffc;
}

/* Header rows... */
..report tr.rh {
	background-color: #acf;
	color: black;
	font-weight: bold;
}

/* Calendars... */
..report .rc {
	background-color: #f0f0f0;
}

/* Even rows... */
..report .re, .report .reu {
	background-color: #def;
}

..report .reu td {
	border-bottom: 1px solid black;
}

/* Odd rows... */
..report .ro, .report .rou {
	background-color: white;
}

..report .rou td {
	border-bottom: 1px solid black;
}

..report .rou table td, .report .reu table td {
	border-bottom: 0px solid black;
}

/* styles for footnote marker */
..report .fn {
	white-space: nowrap;
}

/* styles for numeric types */
..report .num, .report .nump {
	text-align: right;
	white-space: nowrap;
}

..report .nump {
	padding-left: 2em;
}

..report .nump {
	padding: 0px 0.4em 0px 2em;
}

/* styles for text types */
..report .text {
	text-align: left;
	white-space: normal;
}

..report .text .big {
	margin-bottom: 1em;
	width: 17em;
}

..report .text .more {
	display: none;
}

..report .text .note {
	font-style: italic;
	font-weight: bold;
}

..report .text .small {
	width: 10em;
}

..report sup {
	font-style: italic;
}

..report .outerFootnotes {
	font-size: 1em;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R65.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6760453456">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Performance Stock (Details) - Performance Shares [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Performance stock (in shares)</a></td>
<td class="nump">52,140<span></span>
</td>
<td class="nump">25,707<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 76.54<span></span>
</td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares)</a></td>
<td class="nump">21,434<span></span>
</td>
<td class="nump">20,006<span></span>
</td>
<td class="nump">25,707<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 104.99<span></span>
</td>
<td class="nump">$ 105.75<span></span>
</td>
<td class="nump">$ 58.35<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares)</a></td>
<td class="num">(2,375)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 105.37<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange', window );">Performance change (in shares)</a></td>
<td class="num">(61,816)<span></span>
</td>
<td class="nump">6,427<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue', window );">Performance change, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 88.06<span></span>
</td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Performance stock (in shares)</a></td>
<td class="nump">9,383<span></span>
</td>
<td class="nump">52,140<span></span>
</td>
<td class="nump">25,707<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 76.54<span></span>
</td>
<td class="nump">$ 58.35<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares reserved for issuance pertaining to the outstanding exercisable stock options as of the balance sheet date in the customized range of exercise prices for which the market and performance vesting condition has been satisfied.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R23.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6764506032">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Litigation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LegalMattersAndContingenciesTextBlock', window );">Legal Matters and Contingencies [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">17</em> &#8211; Litigation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">From time to time, the Company <em style="font-weight: inherit; font-style: normal;"> may </em>be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#160;Although the results of litigation and claims cannot be predicted with certainty, the Company does <em style="font-weight: inherit; font-style: normal;">not</em> believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;<b>&#160;</b></p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LegalMattersAndContingenciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for legal proceedings, legal contingencies, litigation, regulatory and environmental matters and other contingencies.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 450<br> -URI http://asc.fasb.org/topic&amp;trid=2127136<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LegalMattersAndContingenciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R27.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6663281040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">263,086</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70,154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">15,718</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14,172</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 46%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Injection Molding</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,415</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,523</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">194,432</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">CNC Machining</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">155,473</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">153,521</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">103,739</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">3D Printing</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,342</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">43,329</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Sheet Metal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,000</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,998</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,767</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,488</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,212</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,223</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130545-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>61
<FILENAME>R38.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6678230976">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock', window );">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td style="width: 17px;">&#160;</td>
       <td style="width: 209px;">&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,841</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">81,893</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">69,929</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,762</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,506</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">81,193</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">91,655</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">74,435</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock', window );">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,991</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(782</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17,808</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,882</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,078</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,367</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,544</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,810</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,215</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Federal</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,121</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,325</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">865</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">269</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">538</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">193</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Foreign</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(809</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(430</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1,918</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">528</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,127</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,538</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,067</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">22,657</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock', window );">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">State tax (net of federal benefit)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Share based compensation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation allowance against deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Research and development credit</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign rate differential</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.9</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Domestic manufacturing deduction</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Miscellaneous</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Transition tax</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.2</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revaluation of deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(5.7</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21.6</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">30.4</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock', window );">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax assets:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Accrued expenses</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,362</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">931</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,337</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Warrants and stock options</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,325</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,908</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,171</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">748</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Inventories</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">169</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Other assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,765</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">666</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net operating loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,513</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,605</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Less valuation allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(8,248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,900</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,394</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,112</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Deferred tax liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Depreciation</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(26,750</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(21,788</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,590</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,486</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;">Leases</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(3,337</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(35,677</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net deferred tax liability</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(26,283</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(20,162</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock', window );">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,233</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of current year</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">592</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">593</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Additions for tax positions of prior years</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">309</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Decrease related to expiration of statutes of limitations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(90</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,039</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at period end</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,598</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of income before income tax between domestic and foreign jurisdictions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the change in unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 55<br> -Paragraph 217<br> -URI http://asc.fasb.org/extlink&amp;oid=117331294&amp;loc=d3e36027-109320<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R34.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6670896720">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Inventory (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock', window );">Schedule of Inventory, Current [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Raw materials</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,818</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,560</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Work in process</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">501</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">792</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total inventory</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,319</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Allowance for obsolescence</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(244</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(265</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,075</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,087</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(c))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfInventoryCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>63
<FILENAME>R30.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6668439264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfGoodwillTextBlock', window );">Schedule of Goodwill [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,635</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,504</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,752</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,752</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted Average Useful Life</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Useful Life (in years)</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b><em style="font-weight: inherit; font-style: normal;">Remaining (in years)</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font-weight: inherit; font-style: normal;">Intangible Assets with finite lives:</em></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Marketing assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">930</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(527</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">403</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">930</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(434</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">496</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Non-compete agreement</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">270</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(222</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">270</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(206</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">64</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0 - 5.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade secrets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(233</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade names</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Software technology</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,229</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2,275</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">12,229</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(997</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,232</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Customer relationships</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,106</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,964</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,569</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,501</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.0 - 9.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">25,829</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,460</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24,829</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(4,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19,850</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font-weight: inherit; font-style: normal;">Estimated Amortization Expense</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,813</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,400</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Thereafter</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,108</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfGoodwillTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=108376223&amp;loc=d3e13816-109267<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=108376223&amp;loc=d3e13854-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfGoodwillTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<FILENAME>R13.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820345696">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Fair Value Measurements<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Disclosures [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">7</em> &#8211; Fair Value Measurements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font-weight: inherit; font-style: normal;">820,</em><i> Fair Value Measuremen</i>t (ASC <em style="font-weight: inherit; font-style: normal;">820</em>), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC <em style="font-weight: inherit; font-style: normal;">820</em> also establishes a fair value hierarchy which requires classification based on observable and unobservable inputs when measuring fair value. There are <em style="font-weight: inherit; font-style: normal;">three</em> levels of inputs that <em style="font-weight: inherit; font-style: normal;"> may </em>be used to measure fair value:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</i><em style="font-weight: inherit; font-style: normal;">1&#8212;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</i><em style="font-weight: inherit; font-style: normal;">2&#8212;Observable</em> inputs other than Level&#160;<em style="font-weight: inherit; font-style: normal;">1</em> prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are <em style="font-weight: inherit; font-style: normal;">not</em> active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</i><em style="font-weight: inherit; font-style: normal;">3&#8212;Unobservable</em> inputs that are supported by little or <em style="font-weight: inherit; font-style: normal;">no</em> market activity and that are significant to the fair value of the assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s cash equivalents measured at fair value as of <em style="font-weight: inherit; font-style: normal;"> December&#160;</em><em style="font-weight: inherit; font-style: normal;">31,</em> <em style="font-weight: inherit; font-style: normal;">2019</em> and <em style="font-weight: inherit; font-style: normal;">2018,</em> respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#160;<em style="font-weight: inherit; font-style: normal;">1</em> inputs.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following tables summarizes financial assets as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> measured at fair value on a recurring basis:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">68,962</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,943</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">68,962</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,943</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=117815213&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<FILENAME>R17.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820436736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Financing Obligations<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtDisclosureTextBlock', window );">Debt Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">11</em> &#8211; Financing Obligations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company had no financing obligations as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018.</em><i>&#160;</i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -URI http://asc.fasb.org/topic&amp;trid=2208564<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>66
<FILENAME>R76.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6606188352">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Federal tax statutory rate</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">35.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes', window );">State tax (net of federal benefit)</a></td>
<td class="nump">2.10%<span></span>
</td>
<td class="nump">2.00%<span></span>
</td>
<td class="nump">1.70%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection', window );">Share based compensation</a></td>
<td class="num">(0.50%)<span></span>
</td>
<td class="num">(2.80%)<span></span>
</td>
<td class="num">(0.80%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Valuation allowance against deferred tax assets</a></td>
<td class="nump">1.40%<span></span>
</td>
<td class="nump">0.70%<span></span>
</td>
<td class="nump">2.90%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch', window );">Research and development credit</a></td>
<td class="num">(2.80%)<span></span>
</td>
<td class="num">(2.50%)<span></span>
</td>
<td class="num">(2.20%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign rate differential</a></td>
<td class="num">(0.30%)<span></span>
</td>
<td class="num">(0.10%)<span></span>
</td>
<td class="num">(1.90%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies', window );">Tax reserves</a></td>
<td class="nump">1.10%<span></span>
</td>
<td class="num">(0.10%)<span></span>
</td>
<td class="nump">0.90%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities', window );">Domestic manufacturing deduction</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(2.50%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments', window );">Miscellaneous</a></td>
<td class="num">(0.40%)<span></span>
</td>
<td class="num">(0.50%)<span></span>
</td>
<td class="num">(0.20%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent', window );">Transition tax</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.80%)<span></span>
</td>
<td class="nump">3.20%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability', window );">Revaluation of deferred tax liability</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.50%)<span></span>
</td>
<td class="num">(5.70%)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Total</a></td>
<td class="nump">21.60%<span></span>
</td>
<td class="nump">16.40%<span></span>
</td>
<td class="nump">30.40%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Qualified subsidiary election.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to deduction for qualified production activity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax contingencies. Includes, but not limited to, domestic tax contingency, foreign tax contingency, state and local tax contingency, and other contingencies.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>68
<FILENAME>R82.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6819258048">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">$ 62,230<span></span>
</td>
<td class="nump">$ 87,104<span></span>
</td>
<td class="nump">$ 32,635<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">45,123<span></span>
</td>
<td class="nump">78,762<span></span>
</td>
<td class="nump">20,370<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">14,743<span></span>
</td>
<td class="nump">7,576<span></span>
</td>
<td class="nump">11,704<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_JP', window );">JAPAN</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">$ 2,364<span></span>
</td>
<td class="nump">$ 766<span></span>
</td>
<td class="nump">$ 561<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_JP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>69
<FILENAME>R72.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6815734224">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">$ 541,497<span></span>
</td>
<td class="nump">$ 461,215<span></span>
</td>
<td class="nump">$ 379,833<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">585,790<span></span>
</td>
<td class="nump">541,497<span></span>
</td>
<td class="nump">461,215<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember', window );">Accumulated Foreign Currency Adjustment Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">(8,492)<span></span>
</td>
<td class="num">(5,234)<span></span>
</td>
<td class="num">(10,753)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax', window );">Other comprehensive (loss) income before reclassifications</a></td>
<td class="nump">1,474<span></span>
</td>
<td class="num">(3,258)<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax', window );">Amounts reclassified from accumulated other comprehensive income (loss)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTax', window );">Net current-period other comprehensive (loss) income</a></td>
<td class="nump">1,474<span></span>
</td>
<td class="num">(3,258)<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">$ (7,018)<span></span>
</td>
<td class="num">$ (8,492)<span></span>
</td>
<td class="num">$ (5,234)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax, before reclassification adjustments of other comprehensive income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669686-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=118951672&amp;loc=d3e1436-108581<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of other comprehensive income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=118951672&amp;loc=d3e1436-108581<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of reclassification adjustments of other comprehensive income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17B<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL34724394-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669686-108580<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=118951672&amp;loc=d3e1436-108581<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=27010918&amp;loc=d3e74512-122707<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>R51.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820377472">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details) - Fair Value, Recurring [Member] - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</a></td>
<td class="nump">$ 68,962<span></span>
</td>
<td class="nump">$ 8,943<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">68,962<span></span>
</td>
<td class="nump">8,943<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=117815213&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MoneyMarketFundsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MoneyMarketFundsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>71
<FILENAME>R55.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820357456">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Property and Equipment - Components of Property and Equipment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Land', window );">Land</a></td>
<td class="nump">$ 14,098<span></span>
</td>
<td class="nump">$ 10,566<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BuildingsAndImprovementsGross', window );">Buildings and improvements</a></td>
<td class="nump">75,843<span></span>
</td>
<td class="nump">72,819<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MachineryAndEquipmentGross', window );">Machinery and equipment</a></td>
<td class="nump">208,954<span></span>
</td>
<td class="nump">185,416<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ComputerHardwareAndSoftwareGross', window );">Computer hardware and software</a></td>
<td class="nump">24,953<span></span>
</td>
<td class="nump">22,323<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LeaseholdImprovementsGross', window );">Leasehold improvements</a></td>
<td class="nump">7,341<span></span>
</td>
<td class="nump">7,330<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConstructionInProgressGross', window );">Construction in progress</a></td>
<td class="nump">54,313<span></span>
</td>
<td class="nump">25,279<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Total</a></td>
<td class="nump">385,502<span></span>
</td>
<td class="nump">323,733<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Accumulated depreciation and amortization</a></td>
<td class="num">(121,790)<span></span>
</td>
<td class="num">(95,732)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">$ 263,712<span></span>
</td>
<td class="nump">$ 228,001<span></span>
</td>
<td class="nump">$ 166,440<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ComputerHardwareAndSoftwareGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The gross amount of computer hardware and software as of the balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_ComputerHardwareAndSoftwareGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.14)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BuildingsAndImprovementsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation of building structures held for productive use including addition, improvement, or renovation to the structure, including, but not limited to, interior masonry, interior flooring, electrical, and plumbing.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6812-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BuildingsAndImprovementsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConstructionInProgressGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of structure or a modification to a structure under construction. Includes recently completed structures or modifications to structures that have not been placed into service.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConstructionInProgressGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Land">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depletion of real estate held for productive use, excluding land held for sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.13)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6812-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Land</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseholdImprovementsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation of additions or improvements to assets held under a lease arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6812-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseholdImprovementsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MachineryAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation of tangible personal property used to produce goods and services, including, but is not limited to, tools, dies and molds, computer and office equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6812-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MachineryAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.13)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>72
<FILENAME>R59.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6814851296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Dividend Rate</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value</a></td>
<td class="nump">$ 0.9<span></span>
</td>
<td class="nump">$ 13.0<span></span>
</td>
<td class="nump">$ 7.0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term</a></td>
<td class="text">5 years 6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value</a></td>
<td class="nump">$ 8.6<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term</a></td>
<td class="text">3 years 7 months 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Intrinsic Value</a></td>
<td class="nump">$ 6.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested in Period, Fair Value</a></td>
<td class="nump">$ 1.5<span></span>
</td>
<td class="nump">$ 1.5<span></span>
</td>
<td class="nump">$ 2.8<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=prlb_ESPPMember', window );">ESPP [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate', window );">Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date</a></td>
<td class="nump">15.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EmployeeStockPurchasePlanOfferingPeriod', window );">Employee Stock Purchase Plan, Offering Period</a></td>
<td class="text">6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent', window );">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent</a></td>
<td class="nump">85.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total</a></td>
<td class="nump">41,615<span></span>
</td>
<td class="nump">33,562<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased', window );">Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased</a></td>
<td class="nump">86.70<span></span>
</td>
<td class="nump">85.61<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant</a></td>
<td class="nump">1,168,830<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Dividend Rate</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">$ 3.6<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</a></td>
<td class="text">2 years 7 months 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</a></td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">$ 21.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</a></td>
<td class="text">2 years 7 months 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</a></td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember', window );">Performance Shares [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</a></td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">$ 0.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</a></td>
<td class="text">1 month 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit', window );">Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit', window );">Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit</a></td>
<td class="nump">150.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EmployeeStockPurchasePlanOfferingPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EmployeeStockPurchasePlanOfferingPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average purchase price of shares purchased through the Employee Stock Purchase Plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cost not yet recognized for nonvested award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Discount rate from fair value on offering date that participants pay for shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of options vested. Excludes equity instruments other than options, for example, but not limited to, share units, stock appreciation rights, restricted stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Purchase price of common stock expressed as a percentage of its fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=prlb_ESPPMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=prlb_ESPPMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>73
<FILENAME>R2.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6826613472">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 125,225<span></span>
</td>
<td class="nump">$ 85,046<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MarketableSecuritiesCurrent', window );">Short-term marketable securities</a></td>
<td class="nump">35,437<span></span>
</td>
<td class="nump">46,750<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Accounts receivable, net of allowance for doubtful accounts of $952 and $919 as of December 31, 2019 and December 31, 2018, respectively</a></td>
<td class="nump">57,450<span></span>
</td>
<td class="nump">59,155<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventory</a></td>
<td class="nump">10,075<span></span>
</td>
<td class="nump">10,087<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">8,232<span></span>
</td>
<td class="nump">8,567<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxesReceivable', window );">Income taxes receivable</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">5,757<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">236,419<span></span>
</td>
<td class="nump">215,362<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">263,712<span></span>
</td>
<td class="nump">228,001<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">128,752<span></span>
</td>
<td class="nump">128,752<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherIntangibleAssetsNet', window );">Other intangible assets, net</a></td>
<td class="nump">17,369<span></span>
</td>
<td class="nump">19,850<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MarketableSecuritiesNoncurrent', window );">Long-term marketable securities</a></td>
<td class="nump">12,960<span></span>
</td>
<td class="nump">23,579<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">11,425<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other long-term assets</a></td>
<td class="nump">3,030<span></span>
</td>
<td class="nump">3,441<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">673,667<span></span>
</td>
<td class="nump">618,985<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsPayableCurrent', window );">Accounts payable</a></td>
<td class="nump">16,804<span></span>
</td>
<td class="nump">17,411<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeRelatedLiabilitiesCurrent', window );">Accrued compensation</a></td>
<td class="nump">15,058<span></span>
</td>
<td class="nump">18,130<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesAndOtherLiabilities', window );">Accrued liabilities and other</a></td>
<td class="nump">11,057<span></span>
</td>
<td class="nump">16,702<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Current operating lease liabilities</a></td>
<td class="nump">3,340<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedIncomeTaxesCurrent', window );">Income taxes payable</a></td>
<td class="nump">1,322<span></span>
</td>
<td class="nump">491<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">47,581<span></span>
</td>
<td class="nump">52,734<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Long-term operating lease liabilities</a></td>
<td class="nump">8,565<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Long-term deferred tax liabilities</a></td>
<td class="nump">26,283<span></span>
</td>
<td class="nump">20,162<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">5,448<span></span>
</td>
<td class="nump">4,592<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Total liabilities</a></td>
<td class="nump">87,877<span></span>
</td>
<td class="nump">77,488<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquityAbstract', window );"><strong>Shareholders' equity</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockValue', window );">Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of December 31, 2019 and December 31, 2018, respectively</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockValue', window );">Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,786,459 and 26,984,747 shares as of December 31, 2019 and December 31, 2018, respectively</a></td>
<td class="nump">27<span></span>
</td>
<td class="nump">27<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdditionalPaidInCapitalCommonStock', window );">Additional paid-in capital</a></td>
<td class="nump">268,059<span></span>
</td>
<td class="nump">258,502<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained earnings</a></td>
<td class="nump">324,722<span></span>
</td>
<td class="nump">291,460<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss</a></td>
<td class="num">(7,018)<span></span>
</td>
<td class="num">(8,492)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total shareholders' equity</a></td>
<td class="nump">585,790<span></span>
</td>
<td class="nump">541,497<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and shareholders' equity</a></td>
<td class="nump">$ 673,667<span></span>
</td>
<td class="nump">$ 618,985<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130549-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=118952595&amp;loc=d3e4428-111522<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=118952595&amp;loc=d3e4531-111522<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedIncomeTaxesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedIncomeTaxesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesAndOtherLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesAndOtherLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=d3e637-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669686-108580<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=d3e681-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapitalCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdditionalPaidInCapitalCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6801-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3044-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=d3e31931-109318<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeRelatedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeRelatedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=77989000&amp;loc=SL49117168-202975<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount due within one year of the balance sheet date (or one operating cycle, if longer) from tax authorities as of the balance sheet date representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03.5(c))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.10)<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.3(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxesReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116846819&amp;loc=d3e3927-108312<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19-26)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.21)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MarketableSecuritiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in marketable security, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MarketableSecuritiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MarketableSecuritiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in marketable security, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.12)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MarketableSecuritiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.17)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(7))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cumulative amount of the reporting entity's undistributed earnings or deficit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=27010918&amp;loc=d3e74512-122707<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>74
<FILENAME>R6.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6830001936">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Operating activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<span></span>
</td>
<td class="nump">$ 51,778<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">30,864<span></span>
</td>
<td class="nump">26,754<span></span>
</td>
<td class="nump">18,474<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Share-based Payment Arrangement, Noncash Expense, Total</a></td>
<td class="nump">10,781<span></span>
</td>
<td class="nump">10,928<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefit', window );">Deferred taxes</a></td>
<td class="nump">6,106<span></span>
</td>
<td class="nump">11,936<span></span>
</td>
<td class="nump">1,174<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetImpairmentCharges', window );">Loss on impairment of assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">513<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GainLossOnSaleOfBusiness', window );">Gain on sale of businesses</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(671)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Amortization of held-to-maturity securities</a></td>
<td class="nump">5<span></span>
</td>
<td class="nump">374<span></span>
</td>
<td class="nump">1,063<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherNoncashIncomeExpense', window );">Other</a></td>
<td class="nump">391<span></span>
</td>
<td class="num">(619)<span></span>
</td>
<td class="num">(153)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities, net of acquisitions:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable</a></td>
<td class="nump">1,848<span></span>
</td>
<td class="num">(6,098)<span></span>
</td>
<td class="num">(9,933)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="nump">60<span></span>
</td>
<td class="num">(189)<span></span>
</td>
<td class="num">(985)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other</a></td>
<td class="nump">545<span></span>
</td>
<td class="num">(2,098)<span></span>
</td>
<td class="num">(691)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable', window );">Income taxes</a></td>
<td class="nump">6,555<span></span>
</td>
<td class="num">(6,652)<span></span>
</td>
<td class="nump">1,646<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="num">(719)<span></span>
</td>
<td class="nump">1,942<span></span>
</td>
<td class="nump">3,176<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOtherOperatingLiabilities', window );">Accrued liabilities and other</a></td>
<td class="num">(4,039)<span></span>
</td>
<td class="nump">10,734<span></span>
</td>
<td class="nump">7,128<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">116,052<span></span>
</td>
<td class="nump">122,929<span></span>
</td>
<td class="nump">81,748<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Investing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property, equipment and other capital assets</a></td>
<td class="num">(62,230)<span></span>
</td>
<td class="num">(87,104)<span></span>
</td>
<td class="num">(32,635)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Cash used for acquisitions, net of cash acquired</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(90)<span></span>
</td>
<td class="num">(110,533)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromDivestitureOfBusinesses', window );">Proceeds from sale of businesses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">284<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireOtherInvestments', window );">Purchases of other assets and investments</a></td>
<td class="num">(4,000)<span></span>
</td>
<td class="num">(126)<span></span>
</td>
<td class="num">(8,742)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireHeldToMaturitySecurities', window );">Purchases of marketable securities</a></td>
<td class="num">(46,403)<span></span>
</td>
<td class="num">(41,384)<span></span>
</td>
<td class="num">(20,037)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities', window );">Proceeds from maturities of marketable securities</a></td>
<td class="nump">68,330<span></span>
</td>
<td class="nump">65,139<span></span>
</td>
<td class="nump">47,972<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(44,303)<span></span>
</td>
<td class="num">(63,281)<span></span>
</td>
<td class="num">(123,975)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RepaymentsOfLongTermDebt', window );">Payments on debt</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(5,000)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfDebt', window );">Proceeds from issuance of debt</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">5,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions', window );">Proceeds from exercises of stock options</a></td>
<td class="nump">4,391<span></span>
</td>
<td class="nump">8,935<span></span>
</td>
<td class="nump">8,602<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation', window );">Purchases of shares withheld for tax obligations</a></td>
<td class="num">(2,487)<span></span>
</td>
<td class="num">(2,144)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRepurchaseOfCommonStock', window );">Repurchases of common stock</a></td>
<td class="num">(33,521)<span></span>
</td>
<td class="num">(12,229)<span></span>
</td>
<td class="num">(4,410)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash used in financing activities</a></td>
<td class="num">(31,617)<span></span>
</td>
<td class="num">(10,438)<span></span>
</td>
<td class="nump">9,192<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents', window );">Effect of exchange rate changes on cash and cash equivalents</a></td>
<td class="nump">47<span></span>
</td>
<td class="num">(871)<span></span>
</td>
<td class="nump">947<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease', window );">Net increase (decrease) in cash and cash equivalents</a></td>
<td class="nump">40,179<span></span>
</td>
<td class="nump">48,339<span></span>
</td>
<td class="num">(32,088)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents, beginning of period</a></td>
<td class="nump">85,046<span></span>
</td>
<td class="nump">36,707<span></span>
</td>
<td class="nump">68,795<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents, end of period</a></td>
<td class="nump">125,225<span></span>
</td>
<td class="nump">85,046<span></span>
</td>
<td class="nump">36,707<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SupplementalCashFlowInformationAbstract', window );"><strong>Supplemental cash flow disclosure</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InterestPaidNet', window );">Cash paid for interest</a></td>
<td class="nump">14<span></span>
</td>
<td class="nump">39<span></span>
</td>
<td class="nump">19<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxesPaid', window );">Cash paid for taxes</a></td>
<td class="nump">$ 4,002<span></span>
</td>
<td class="nump">$ 9,966<span></span>
</td>
<td class="nump">$ 19,113<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetImpairmentCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of write-down of assets recognized in the income statement. Includes, but is not limited to, losses from tangible assets, intangible assets and goodwill.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109226348&amp;loc=d3e2420-110228<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetImpairmentCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3044-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118951113&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in cash and cash equivalents. Cash and cash equivalents are the amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Includes effect from exchange rate changes.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DepreciationDepletionAndAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DepreciationDepletionAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) from the effect of exchange rate changes on cash and cash equivalent balances held in foreign currencies.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=98513438&amp;loc=d3e33268-110906<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnSaleOfBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4582445-111684<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnSaleOfBusiness</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=98513485&amp;loc=d3e4297-108586<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3536-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxesPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the period in the amount due for taxes based on the reporting entity's earnings or attributable to the entity's income earning process (business presence) within a given jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOperatingCapitalAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOtherOperatingLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in operating liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOtherOperatingLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=98513485&amp;loc=d3e4297-108586<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3367-108585<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3536-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InterestPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3536-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669619-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637391&amp;loc=SL114874048-224260<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118930883&amp;loc=SL7669625-108580<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=116637232&amp;loc=SL114874131-224263<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherNoncashIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherNoncashIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsForRepurchaseOfCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow to reacquire common stock during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireHeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow through purchase of long-term held-to-maturity securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=118954083&amp;loc=d3e26853-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireHeldToMaturitySecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireOtherInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow to acquire investments classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireOtherInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromDivestitureOfBusinesses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the amount received from the sale of a portion of the company's business, for example a segment, division, branch or other business, during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromDivestitureOfBusinesses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIssuanceOfDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow during the period from additional borrowings in aggregate debt. Includes proceeds from short-term and long-term debt.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromIssuanceOfDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=SL79508275-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the aggregate amount received by the entity through sale or maturity of marketable securities  (held-to-maturity or available-for-sale) during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfLongTermDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfLongTermDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SupplementalCashFlowInformationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SupplementalCashFlowInformationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>75
<FILENAME>R63.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6834430368">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Dec. 31, 2016</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">276,266<span></span>
</td>
<td class="nump">252,616<span></span>
</td>
<td class="nump">399,055<span></span>
</td>
<td class="nump">569,639<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 72.38<span></span>
</td>
<td class="nump">$ 64.71<span></span>
</td>
<td class="nump">$ 51.13<span></span>
</td>
<td class="nump">$ 45.00<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember', window );">Exercise Price Range One [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="nump">7.76<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="nump">$ 31.43<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">23,883<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">1 year 11 months 23 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 25.04<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">23,883<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 25.04<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember', window );">Exercise Price Range Two [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="nump">31.44<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="nump">$ 66.87<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">125,022<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">4 years 5 months 1 day<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 58.67<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">85,656<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 58.81<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember', window );">Exercise Price Range Three [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="nump">66.88<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="nump">$ 96.20<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">45,255<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">4 years 5 months 26 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 70.98<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">33,445<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 70.41<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember', window );">Exercise Price Range Four [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="nump">96.21<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="nump">$ 123.10<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">82,106<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">8 years 8 months 4 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 107.79<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">9,439<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 110.36<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The floor of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares reserved for issuance pertaining to the outstanding exercisable stock options as of the balance sheet date in the customized range of exercise prices for which the market and performance vesting condition has been satisfied.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The ceiling of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average exercise price as of the balance sheet date for those equity-based payment arrangements exercisable and outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>76
<FILENAME>R67.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6774621120">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 14 - Leases (Details Textual)<br> Pure in Thousands, $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jan. 01, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2018 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="nump">$ 11,425<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_LesseeFinancialLeaseLiabilityNumberOfLeases', window );">Lessee, Financial Lease, Liability, Number of Leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases', window );">Lessee, Operating Lease, Lease Not yet Commenced, Number of Leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating Lease, Liability, Total</a></td>
<td class="nump">$ 11,905<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseTermOfContract', window );">Lessee, Operating Lease, Term of Contract</a></td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseTermOfContract', window );">Lessee, Operating Lease, Term of Contract</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member', window );">Accounting Standards Update 2016-02 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 13,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating Lease, Liability, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 13,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_LesseeFinancialLeaseLiabilityNumberOfLeases">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of the lessee's finance leases.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_LesseeFinancialLeaseLiabilityNumberOfLeases</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:pureItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of the lessee's operating leases which have not yet commenced.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:pureItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseTermOfContract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Term of lessee's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888426&amp;loc=SL77918673-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseTermOfContract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseArrangementTypeAxis=prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseArrangementTypeAxis=prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>77
<FILENAME>R48.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6803011440">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">$ 128,752<span></span>
</td>
<td class="nump">$ 128,504<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">248<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">128,752<span></span>
</td>
<td class="nump">128,752<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">123,883<span></span>
</td>
<td class="nump">123,635<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">248<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">123,883<span></span>
</td>
<td class="nump">123,883<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">4,239<span></span>
</td>
<td class="nump">4,239<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">4,239<span></span>
</td>
<td class="nump">4,239<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_JP', window );">JAPAN</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">630<span></span>
</td>
<td class="nump">630<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">$ 630<span></span>
</td>
<td class="nump">$ 630<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=77989000&amp;loc=SL49117168-202975<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAcquiredDuringPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=108376223&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAcquiredDuringPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_JP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>79
<FILENAME>R44.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6834480528">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Business Combinations (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1">1 Months Ended</th>
<th class="th" colspan="4">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Nov. 30, 2017</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Dec. 31, 2016</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ (0)<span></span>
</td>
<td class="nump">$ 90<span></span>
</td>
<td class="nump">$ 110,533<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 128,504<span></span>
</td>
<td class="nump">128,752<span></span>
</td>
<td class="nump">128,752<span></span>
</td>
<td class="nump">128,504<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Share-based Payment Arrangement, Noncash Expense, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 10,781<span></span>
</td>
<td class="nump">$ 10,928<span></span>
</td>
<td class="nump">8,558<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember', window );">Trade Names [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Business Combination, Consideration Transferred, Total</a></td>
<td class="nump">$ 121,959<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="nump">110,623<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">11,336<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="nump">$ 99,836<span></span>
</td>
<td class="nump">99,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">99,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod', window );">Business Acquisition, Goodwill, Expected Tax Deductible Period</a></td>
<td class="text">15 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Acquired Finite-lived Intangible Assets, Weighted Average Useful Life</a></td>
<td class="text">5 years 6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationAcquisitionRelatedCosts', window );">Business Combination, Acquisition Related Costs</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense', window );">Business Acquisition, Increase (Decrease) in Depreciation Expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(900)<span></span>
</td>
<td class="num">$ (600)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentForAmortization', window );">Amortization, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,000<span></span>
</td>
<td class="nump">3,100<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Share-based Payment Arrangement, Noncash Expense, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 200<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual', window );">Business Combination, Pro Forma Information, Revenue of Acquiree since Acquisition Date, Actual</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual', window );">Business Combination, Pro Forma Information, Earnings or Loss of Acquiree since Acquisition Date, Actual</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (700)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member] | Employees [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToEmployees', window );">Payments to Employees</a></td>
<td class="nump">$ 1,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member] | Customer Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles', window );">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles</a></td>
<td class="nump">$ 7,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member] | Trade Names [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles', window );">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles</a></td>
<td class="nump">$ 1,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member] | Noncompete Agreements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles', window );">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles</a></td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The period of time in which goodwill arising from a business combination that is expected to be deductible for tax purposes.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of increase (decrease) of expense recognized in the period that reflects the allocation of the costs of tangible assets in a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentForAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate amount of recurring noncash expense charged against earnings in the period to allocate the cost of assets over their estimated remaining economic lives.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentForAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationAcquisitionRelatedCosts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents acquisition-related costs incurred to effect a business combination which costs have been expensed during the period. Such costs include finder's fees; advisory, legal, accounting, valuation, and other professional or consulting fees; general administrative costs, including the costs of maintaining an internal acquisitions department; and may include costs of registering and issuing debt and equity securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 25<br> -Paragraph 23<br> -URI http://asc.fasb.org/extlink&amp;oid=116868678&amp;loc=d3e1043-128460<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationAcquisitionRelatedCosts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=35744584&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of earnings or loss of the acquiree since the acquisition date included in the consolidated income statement for the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of revenue of the acquiree since the acquisition date included in the consolidated income statement for the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of identifiable intangible assets recognized as of the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 55<br> -Paragraph 37<br> -URI http://asc.fasb.org/extlink&amp;oid=116868840&amp;loc=d3e2207-128464<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=77989000&amp;loc=SL49117168-202975<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToEmployees">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Payments of cash to employees, including wages and salaries, during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3367-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToEmployees</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_TitleOfIndividualAxis=prlb_EmployeesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_TitleOfIndividualAxis=prlb_EmployeesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>80
<FILENAME>R40.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6829848848">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Nov. 30, 2017</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Jan. 01, 2019</div></th>
<th class="th"><div>Jan. 01, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CapitalizedComputerSoftwareNet', window );">Capitalized Computer Software, Net, Ending Balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 32,700<span></span>
</td>
<td class="nump">$ 16,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdvertisingExpense', window );">Advertising Expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">13,000<span></span>
</td>
<td class="nump">11,800<span></span>
</td>
<td class="nump">$ 10,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpense', window );">Research and Development Expense, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">32,692<span></span>
</td>
<td class="nump">28,735<span></span>
</td>
<td class="nump">23,560<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">(0)<span></span>
</td>
<td class="nump">90<span></span>
</td>
<td class="nump">$ 110,533<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,425<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,462<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating Lease, Liability, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 11,905<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember', window );">Retained Earnings [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,462<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member', window );">Accounting Standards Update 2016-02 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 13,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating Lease, Liability, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 13,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member', window );">Accounting Standards Update 2014-09 [Member] | Retained Earnings [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,500<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Business Combination, Consideration Transferred, Total</a></td>
<td class="nump">$ 121,959<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="nump">110,623<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">$ 11,336<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">39 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Office Furniture And Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Computer Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Land, Buildings and Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">39 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">15 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Office Furniture And Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">7 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Computer Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Land, Buildings and Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">39 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdvertisingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, product or product line.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=35744584&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedComputerSoftwareNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The carrying amount of capitalized computer software costs net of accumulated amortization as of the balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedComputerSoftwareNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) to equity or (increase) decrease to net assets, resulting from the cumulative effect adjustment of a new accounting principle applied in the period of adoption.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=77888419&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchAndDevelopmentExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchAndDevelopmentExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=prlb_OfficeFurnitureAndEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=prlb_OfficeFurnitureAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandBuildingsAndImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandBuildingsAndImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>81
<FILENAME>R21.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820421744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Accumulated Other Comprehensive Loss<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfReclassificationAmountTextBlock', window );">Disclosure of Reclassification Amount [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">15</em> &#8211; Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017,</em> respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign currency translation adjustments</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(8,492</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,234</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(10,753</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,258</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,519</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(3,258</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,519</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(7,018</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,492</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(5,234</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfReclassificationAmountTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for any adjustments made during the period to avoid double counting in comprehensive income items displayed as part of net income that also had been displayed as part of other comprehensive income in that period or earlier periods. These adjustments include reclassifications to net income of items in accumulated comprehensive income, such as deferred gains or losses on qualifying hedges when hedged item reported in net income, holding gains or losses on available-for-sale securities transferred into trading category, unrealized holding gains or losses on debt securities transferred from held-to-maturity category into available-for-sale category and accumulated translation adjustment attributable to foreign subsidiary or investment in foreign entity upon sale or liquidation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -URI http://asc.fasb.org/topic&amp;trid=2134417<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfReclassificationAmountTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>82
<FILENAME>R25.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6763712336">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 19 - Subsequent Events<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SubsequentEventsTextBlock', window );">Subsequent Events [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">19</em> &#8211; Subsequent Events</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><em style="font-weight: inherit; font-style: normal;">None.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 855<br> -URI http://asc.fasb.org/topic&amp;trid=2122774<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>83
<FILENAME>R29.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6725078112">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Business Combinations (Tables) - Rapid [Member]<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock', window );">Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,720</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99,836</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,700</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,855</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">124,111</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,067</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">85</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,152</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,959</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,378</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,755</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110,623</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,336</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total purchase consideration</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,959</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionProFormaInformationTextBlock', window );">Business Acquisition, Pro Forma Information [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2016</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">(unaudited)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">386,677</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">336,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">55,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionProFormaInformationTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of pro forma results of operations for a material business acquisition or series of individually immaterial business acquisitions that are material in the aggregate.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=79982066&amp;loc=d3e1392-128463<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionProFormaInformationTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>84
<FILENAME>R62.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6764135136">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Stock Option Activity (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding (in shares)</a></td>
<td class="nump">252,616<span></span>
</td>
<td class="nump">399,055<span></span>
</td>
<td class="nump">569,639<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 64.71<span></span>
</td>
<td class="nump">$ 51.13<span></span>
</td>
<td class="nump">$ 45.00<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Granted (in shares)</a></td>
<td class="nump">53,708<span></span>
</td>
<td class="nump">36,600<span></span>
</td>
<td class="nump">60,100<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice', window );">Granted, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 105.81<span></span>
</td>
<td class="nump">$ 110.59<span></span>
</td>
<td class="nump">$ 69.06<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Exercised (in shares)</a></td>
<td class="num">(16,079)<span></span>
</td>
<td class="num">(155,765)<span></span>
</td>
<td class="num">(187,313)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice', window );">Exercised, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 48.67<span></span>
</td>
<td class="nump">$ 38.92<span></span>
</td>
<td class="nump">$ 35.93<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod', window );">Cancelled (in shares)</a></td>
<td class="num">(13,979)<span></span>
</td>
<td class="num">(27,274)<span></span>
</td>
<td class="num">(43,371)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice', window );">Cancelled, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 89.50<span></span>
</td>
<td class="nump">$ 74.35<span></span>
</td>
<td class="nump">$ 61.02<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding (in shares)</a></td>
<td class="nump">276,266<span></span>
</td>
<td class="nump">252,616<span></span>
</td>
<td class="nump">399,055<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 72.38<span></span>
</td>
<td class="nump">$ 64.71<span></span>
</td>
<td class="nump">$ 51.13<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber', window );">Options exercisable (in shares)</a></td>
<td class="nump">152,423<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice', window );">Options exercisable, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 59.26<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Gross number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which option holders acquired shares when converting their stock options into shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=27012166&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>85
<FILENAME>R66.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664452928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (months) (Year)</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">1.59%<span></span>
</td>
<td class="nump">2.06%<span></span>
</td>
<td class="nump">0.97%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">42.63%<span></span>
</td>
<td class="nump">31.50%<span></span>
</td>
<td class="nump">24.49%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">2.35%<span></span>
</td>
<td class="nump">2.33%<span></span>
</td>
<td class="nump">1.48%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">53.57%<span></span>
</td>
<td class="nump">37.36%<span></span>
</td>
<td class="nump">34.51%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=115993241&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>86
<FILENAME>R3.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820818848">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent', window );">Allowance for doubtful accounts</a></td>
<td class="nump">$ 952<span></span>
</td>
<td class="nump">$ 919<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.001<span></span>
</td>
<td class="nump">$ 0.001<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized (in shares)</a></td>
<td class="nump">10,000,000<span></span>
</td>
<td class="nump">10,000,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesOutstanding', window );">Preferred stock, shares outstanding (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.001<span></span>
</td>
<td class="nump">$ 0.001<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized (in shares)</a></td>
<td class="nump">150,000,000<span></span>
</td>
<td class="nump">150,000,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Common stock, shares issued (in shares)</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="nump">26,984,747<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Common stock, shares outstanding (in shares)</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="nump">26,984,747<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=118936363&amp;loc=d3e5074-111524<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118955202&amp;loc=SL82895884-210446<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>87
<FILENAME>R7.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6725258368">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Nature of Business<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock', window );">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b><a href="#" id="notes" title="notes"/></b></p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">1</em> &#8212; Nature of Business</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Organization and business</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#160;injection-molded, computer numerical control (CNC) machined, <em style="font-weight: inherit; font-style: normal;">3D</em>-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#8217;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#8217;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use <em style="font-weight: inherit; font-style: normal;">three</em>-dimensional (<em style="font-weight: inherit; font-style: normal;">3D</em>)&#160;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#8217;s primary manufacturing product lines currently include Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#8217;s subsidiaries are:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#160;</b>&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Name</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0); width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Location</b></p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="width: 5%;">&#160;</td>
      <td style="width: 58%;">&#160;</td>
      <td style="width: 1%;">&#160;</td>
      <td style="width: 36%; text-align: right;">&#160;</td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL-US International LLC</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Management Group LLC</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Sheet Metal LLC (RSM)</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Rapid Manufacturing LLC (RM)</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Ltd.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL International Holdings, UK, Ltd.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL Euro Services Limited</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs GmbH</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </td>
     </tr>
     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Tooling GmbH</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </td>
     </tr>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 5%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs, G.K.</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Japan</p> </td>
     </tr>
    </tbody>
   </table>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -URI http://asc.fasb.org/topic&amp;trid=2122149<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -URI http://asc.fasb.org/topic&amp;trid=2197479<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>88
<FILENAME>R45.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6763556112">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Nov. 30, 2017</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract', window );"><strong>Assets acquired:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 128,752<span></span>
</td>
<td class="nump">$ 128,752<span></span>
</td>
<td class="nump">$ 128,504<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities assumed:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Net cash consideration</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ (0)<span></span>
</td>
<td class="nump">$ 90<span></span>
</td>
<td class="nump">110,533<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember', window );">Rapid [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract', window );"><strong>Assets acquired:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets', window );">Current assets</a></td>
<td class="nump">$ 6,720<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="nump">99,836<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 99,600<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill', window );">Other intangible assets</a></td>
<td class="nump">8,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets', window );">Other long-term assets</a></td>
<td class="nump">8,855<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets', window );">Total assets acquired</a></td>
<td class="nump">124,111<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities assumed:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities', window );">Current liabilities</a></td>
<td class="nump">2,067<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities', window );">Other long-term liabilities</a></td>
<td class="nump">85<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities', window );">Total liabilities assumed</a></td>
<td class="nump">2,152<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet', window );">Net assets acquired</a></td>
<td class="nump">121,959<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Cash paid</a></td>
<td class="nump">115,378<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAcquiredFromAcquisition', window );">Cash acquired</a></td>
<td class="num">(4,755)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Net cash consideration</a></td>
<td class="nump">110,623<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">11,336<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Total purchase consideration</a></td>
<td class="nump">$ 121,959<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=35744584&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of assets acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of intangible assets, excluding goodwill, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of other assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=116869197&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAcquiredFromAcquisition">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the acquisition of business during the period (for example, cash that was held by the acquired business).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAcquiredFromAcquisition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=77989000&amp;loc=SL49117168-202975<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=35744584&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=prlb_RapidMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_RapidMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>89
<FILENAME>R41.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6773531984">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
<th class="th"><div>Jan. 01, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,462<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue from Contract with Customer, Including Assessed Tax</a></td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">445,596<span></span>
</td>
<td class="nump">$ 344,490<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of Goods and Services Sold, Total</a></td>
<td class="nump">223,438<span></span>
</td>
<td class="nump">206,917<span></span>
</td>
<td class="nump">150,648<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Increase (Decrease) in Accounts Receivable</a></td>
<td class="num">(1,848)<span></span>
</td>
<td class="nump">6,098<span></span>
</td>
<td class="nump">9,933<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Increase (Decrease) in Inventories, Total</a></td>
<td class="num">$ (60)<span></span>
</td>
<td class="nump">189<span></span>
</td>
<td class="nump">$ 985<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member', window );">Accounting Standards Update 2014-09 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue from Contract with Customer, Including Assessed Tax</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of Goods and Services Sold, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Increase (Decrease) in Accounts Receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Increase (Decrease) in Inventories, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,300)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember', window );">Retained Earnings [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,462<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember', window );">Retained Earnings [Member] | Accounting Standards Update 2014-09 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption', window );">Cumulative Effect of New Accounting Principle in Period of Adoption</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,500<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -URI http://asc.fasb.org/extlink&amp;oid=116634182&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) to equity or (increase) decrease to net assets, resulting from the cumulative effect adjustment of a new accounting principle applied in the period of adoption.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130545-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=118956577&amp;loc=SL49130543-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_RetainedEarningsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>90
<FILENAME>R49.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6834391568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 25,829<span></span>
</td>
<td class="nump">$ 24,829<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(8,460)<span></span>
</td>
<td class="num">(4,979)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 17,369<span></span>
</td>
<td class="nump">19,850<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember', window );">Marketing-Related Intangible Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 930<span></span>
</td>
<td class="nump">930<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(527)<span></span>
</td>
<td class="num">(434)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 403<span></span>
</td>
<td class="nump">496<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">4 years 3 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 270<span></span>
</td>
<td class="nump">270<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(222)<span></span>
</td>
<td class="num">(206)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 48<span></span>
</td>
<td class="nump">64<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeSecretsMember', window );">Trade Secrets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 250<span></span>
</td>
<td class="nump">250<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(250)<span></span>
</td>
<td class="num">(233)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">17<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">0 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember', window );">Trade Names [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 1,080<span></span>
</td>
<td class="nump">1,080<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(1,080)<span></span>
</td>
<td class="num">(540)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">540<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">0 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember', window );">Computer Software, Intangible Asset [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 13,229<span></span>
</td>
<td class="nump">12,229<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(2,275)<span></span>
</td>
<td class="num">(997)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 10,954<span></span>
</td>
<td class="nump">11,232<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">8 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 10,070<span></span>
</td>
<td class="nump">10,070<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(4,106)<span></span>
</td>
<td class="num">(2,569)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 5,964<span></span>
</td>
<td class="nump">$ 7,501<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">3 years 9 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">9 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 928<br> -SubTopic 340<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6473545&amp;loc=d3e61844-108004<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeSecretsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeSecretsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>91
<FILENAME>R28.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6668738496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Net Income Per Common Share (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock', window );">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net Income</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63,655</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">76,588</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">51,778</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,866,985</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,982,614</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,647,610</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">182,438</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296,202</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">197,461</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,049,423</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,278,816</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,845,071</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net income per share attributable to common shareholders:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.37</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.84</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1.94</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.93</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6371337&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>92
<FILENAME>R20.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6649416544">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Leases<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeasesTextBlock', window );">Lessee, Operating Leases [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">14</em> &#8211; Leases</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s significant accounting policies are disclosed in Note <em style="font-weight: inherit; font-style: normal;">2</em> to the Consolidated Financial Statements included in its Annual Report on Form <em style="font-weight: inherit; font-style: normal;">10</em>-K for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019. </em>Significant changes to the Company&#8217;s accounting policies as a result of adopting ASC <em style="font-weight: inherit; font-style: normal;">842</em> are discussed below.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for leases in accordance with ASC <em style="font-weight: inherit; font-style: normal;">842.</em> The Company adopted&#160;the standard as of&#160;<em style="font-weight: inherit; font-style: normal;"> January 1, 2019, </em>using the alternative transition method provided under ASC <em style="font-weight: inherit; font-style: normal;">842,</em> which allowed the Company to initially apply the new lease standard at the adoption date (the "effective date method"). Under the effective date method, comparative periods are presented in accordance with ASC <em style="font-weight: inherit; font-style: normal;">840</em> and do <em style="font-weight: inherit; font-style: normal;">not</em> include any retrospective adjustments to reflect the adoption of ASC <em style="font-weight: inherit; font-style: normal;">842.</em> The Company elected the package of practical expedients permitted under the transition guidance within the new standard. The Company did <em style="font-weight: inherit; font-style: normal;">not</em> elect the hindsight practical expedient. The Company recorded a net increase of $13.1 million to its operating lease assets and liabilities on <em style="font-weight: inherit; font-style: normal;"> January 1, 2019. </em>The adoption did <em style="font-weight: inherit; font-style: normal;">not</em> result in a cumulative-effect adjustment to the opening balance of retained earnings. The adoption of ASC <em style="font-weight: inherit; font-style: normal;">842</em> did <em style="font-weight: inherit; font-style: normal;">not</em> have a material impact on the Company's consolidated statements of comprehensive income, shareholders' equity or cash flows as of the adoption date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment. The leases have remaining lease terms of <span style="-sec-ix-hidden:c56003286">one</span> year to 10 years. Leases with an initial term of <em style="font-weight: inherit; font-style: normal;">12</em> months or less are <em style="font-weight: inherit; font-style: normal;">not</em> recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms <em style="font-weight: inherit; font-style: normal;"> may </em>be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>the operating lease liability does <em style="font-weight: inherit; font-style: normal;">not</em> include any options to extend or terminate leases. The Company currently has no finance leases.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#8217;s leases do <em style="font-weight: inherit; font-style: normal;">not</em> provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental balance sheet information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,425</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,340</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Long-term operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,565</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,905</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Three Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">976</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,960</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Variable lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">228</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,039</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total lease cost</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,204</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,999</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Maturities of operating lease liabilities as of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 (</em>in accordance with ASC <em style="font-weight: inherit; font-style: normal;">842</em>) were as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Operating Leases</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b><span style="text-decoration: underline; ">Year Ending December 31,</span></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,034</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,835</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,064</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">498</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">After 2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,613</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total future minimum lease payments</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,678</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Less interest</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(773</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Present value of lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,905</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em>we have no operating leases that have <em style="font-weight: inherit; font-style: normal;">not</em> yet commenced.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Weighted average remaining lease term and&#160;discount rate&#160;was as follows:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.6%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental cash flow information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Twelve Months Ended</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 81%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid for amounts included in the measurement of operating lease liabilities:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Operating cash flows from operating leases</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,020</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Lease assets obtained in exchange for new operating lease liabilities</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,921</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;"/><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeasesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -URI http://asc.fasb.org/subtopic&amp;trid=77888251<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeasesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>93
<FILENAME>R24.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6820465376">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SegmentReportingDisclosureTextBlock', window );">Segment Reporting Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">18</em> &#8211; Segment Reporting</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s reportable segments are based on the internal reporting used by the Company&#8217;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#8217;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#160;that the Company does <em style="font-weight: inherit; font-style: normal;">not</em> allocate directly to its operating segments.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue in the United States is derived from Injection Molding, CNC Machining, <em style="font-weight: inherit; font-style: normal;">3D</em> Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and <em style="font-weight: inherit; font-style: normal;">3D</em> Printing product lines. Revenue in&#160;Japan is derived from Injection Molding and CNC Machining product lines. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined and lathe-turned customer parts. <em style="font-weight: inherit; font-style: normal;">3D</em> Printing revenue consists of sales of <em style="font-weight: inherit; font-style: normal;">3D</em>-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The accounting policies of the reportable segments are the same as those described in&#160;Note <em style="font-weight: inherit; font-style: normal;">2</em>&#160;&#8211;&#160;Summary of Significant Accounting Policies. Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are <em style="font-weight: inherit; font-style: normal;">not</em> allocated to business segments.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Beginning in <em style="font-weight: inherit; font-style: normal;">2019,</em> the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue and income from operations by reportable segment are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">263,086</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70,154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">15,718</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14,172</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Income from Operations:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,594</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,710</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99,561</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">15,077</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,747</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">12,796</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Corporate Unallocated and Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,815</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,557</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(40,131</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total income from operations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">79,856</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">88,898</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">72,226</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,171</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">125,308</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,019</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,577</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">33,691</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,522</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,445</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,441</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">228,001</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">166,440</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Expenditures for additions to long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,123</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">78,762</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20,370</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,743</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,576</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,704</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">766</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">561</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total expenditures for additions to long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">62,230</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">87,104</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">32,635</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p><hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Depreciation and Amortization:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,767</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,267</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,746</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,679</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,174</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,351</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">958</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,033</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">30,864</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,754</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">18,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -URI http://asc.fasb.org/topic&amp;trid=2134510<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>94
<FILENAME>R35.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6670282144">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Stock-based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock', window );">Share-based Payment Arrangement, Cost by Plan [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Stock options and other</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,591</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,113</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Employee stock purchase plan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,190</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">815</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">604</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,558</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cost of revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,056</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,543</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">970</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses:</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,632</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,942</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,429</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Research and development</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,851</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,517</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,091</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">General and administrative</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,242</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,926</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,068</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total stock-based compensation expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,558</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock', window );">Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.35 - 2.58%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.24 - 2.36%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.5</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.68 - 44.68%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted average grant date fair value</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$47.84</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$50.08</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$32.26</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock', window );">Share-based Payment Arrangement, Option, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Options</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Exercise Price</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">569,639</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">60,100</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">69.06</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(187,313</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">35.93</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,371</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61.02</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">399,055</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">51.13</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">36,600</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110.59</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(155,765</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">38.92</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27,274</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">252,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">64.71</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,708</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Exercised</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(16,079</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Cancelled</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(13,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.50</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">276,266</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">72.38</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Exercisable at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">152,423</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59.26</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock', window );">Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="8" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="5" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Outstanding</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Remaining Contractual Life</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Number Exercisable</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b>Weighted Average Exercise Price ($)</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">7.76 to 31.43</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">23,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.98</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25.04</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">23,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25.04</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">31.44 to 66.87</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">125,022</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.42</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">85,656</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.81</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">66.88 to 96.20</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">45,255</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">4.49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70.98</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">33,445</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70.41</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"><em style="font-weight: inherit; font-style: normal;">96.21 to 123.10</em></p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"/>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">82,106</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">8.68</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">107.79</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">9,439</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110.36</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock', window );">Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Restricted</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">215,105</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">62.78</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,744</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.70</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(60,102</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.60</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(30,916</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61.99</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">334,831</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.29</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106,855</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115.41</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(86,191</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.64</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(31,574</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">68.67</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,921</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79.85</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,471</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(92,597</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77.25</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(31,822</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87.58</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">314,973</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.55</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock', window );">Schedule of Nonvested Performance-based Units Activity [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted-</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Average</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Grant Date</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Performance</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Fair Value</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Stock Awards</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Per Share</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,707</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2017</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,707</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20,006</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.75</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,427</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2018</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">52,140</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">76.54</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Granted</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,434</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">104.99</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Restrictions lapsed</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Performance change</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(61,816</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">88.06</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Forfeited</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,375</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">105.37</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2019</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,383</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">58.35</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock', window );">Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="7" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td style="text-align: center;">&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.59 - 2.35%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.06 - 2.33%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.97 - 1.48%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">42.63 - 53.57%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">31.50 - 37.36%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">24.49 - 34.51%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td>
       <td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of cost recognized for award under share-based payment arrangement by plan. Includes, but is not limited to, related tax benefit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the changes in outstanding nonvested performance-based units.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116856206&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>95
<FILENAME>R31.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6613842592">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Fair Value Measurements (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock', window );">Fair Value, Assets Measured on Recurring Basis [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 1</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 2</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Level 3</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">68,962</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,943</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Total</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">68,962</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,943</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=117815213&amp;loc=d3e19207-110258<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=117815213&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>96
<FILENAME>R39.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6665692832">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_IncomeFromOperationsByGeographicAreaTableTextBlock', window );">Income from Operations by Geographic Area [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Income from Operations:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,594</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,710</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99,561</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">15,077</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,747</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">12,796</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Corporate Unallocated and Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,815</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(43,557</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(40,131</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total income from operations</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">79,856</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">88,898</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">72,226</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock', window );">Long-lived Assets by Geographic Areas [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">December 31,</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,171</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">125,308</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,019</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,577</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">33,691</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,522</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,445</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,441</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">228,001</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">166,440</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock', window );">Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Expenditures for additions to long-lived assets:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,123</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">78,762</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20,370</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,743</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,576</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,704</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">766</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">561</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total expenditures for additions to long-lived assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">62,230</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">87,104</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">32,635</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock', window );">Depreciation and Amortization by Geographic Region [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Depreciation and Amortization:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,767</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,267</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,746</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,679</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,174</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,351</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">958</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,033</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total depreciation and amortization</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">30,864</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,754</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">18,474</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock', window );">Revenue from External Customers by Geographic Areas [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31,</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Revenue:</b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">263,086</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">70,154</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">15,718</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14,172</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total revenue</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">458,728</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">445,596</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">344,490</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of depreciation and amortization by geographic region.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of expenditures for additions to long-lived assets by geographic region.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_IncomeFromOperationsByGeographicAreaTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of income from operations by geographic area.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_IncomeFromOperationsByGeographicAreaTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph b<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph a<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>97
<FILENAME>R12.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6763873792">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock', window );">Goodwill and Intangible Assets Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">6</em> &#8211; Goodwill and Other Intangible Assets</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The changes in the carrying amount of goodwill for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2017</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Goodwill acquired during 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Dec. 31, 2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">United States</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,635</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Europe</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Japan</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">630</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total goodwill</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,504</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">248</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,752</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">128,752</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As described in Note <em style="font-weight: inherit; font-style: normal;">5</em> &#8211;&#160;Business Combinations, the Company acquired RAPID in <em style="font-weight: inherit; font-style: normal;"> November 2017. </em>The fair value of the consideration paid exceeded the fair value of the assets acquired and liabilities assumed, which resulted in goodwill in the United States&#160;of $99.6 million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017 </em>and a related working capital adjustment of $0.2 million for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Intangible assets other than goodwill for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019 </em>and <em style="font-weight: inherit; font-style: normal;">2018</em> were as follows:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2019</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">Year Ended December 31, 2018</em></em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#160;</b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Weighted Average Useful Life</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Gross</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Accumulated Amortization</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Net</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">Useful Life (in years)</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"><b><em style="font-weight: inherit; font-style: normal;">Remaining (in years)</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font-weight: inherit; font-style: normal;">Intangible Assets with finite lives:</em></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Marketing assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">930</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(527</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">403</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">930</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(434</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">496</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.3</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Non-compete agreement</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">270</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(222</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">270</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(206</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">64</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0 - 5.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade secrets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">250</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(233</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">17</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Trade names</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,080</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">540</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Software technology</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,229</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2,275</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,954</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">12,229</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(997</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,232</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Customer relationships</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,106</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,964</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,070</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,569</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,501</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6.0 - 9.0</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3.8</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 20%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">25,829</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,460</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24,829</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(4,979</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19,850</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font-weight: inherit; font-style: normal;">&#160;</em></td>
       <td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Amortization expense for intangible assets for the years ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019, </em><em style="font-weight: inherit; font-style: normal;">2018</em> and <em style="font-weight: inherit; font-style: normal;">2017</em> was $3.5&#160;million, $3.2 million and $0.5 million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company acquired a software company in <em style="font-weight: inherit; font-style: normal;"> December 2017, </em>which was accounted for as an asset acquisition and resulted in an $8.2 million software technology intangible asset for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2017. </em>The acquisition did <em style="font-weight: inherit; font-style: normal;">not</em> meet the definition of a business under ASC <em style="font-weight: inherit; font-style: normal;">805.</em> The asset acquisition included an additional $5.0 million in contingent consideration to be recognized and paid upon completion of certain milestones&#160;over a 24-month period. The completion of each milestone resulted in additional value to the software technology intangible asset. We recognized $1.0&#160;million of the contingent consideration&#160;for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2019. </em>We recognized $4.0 million of the contingent consideration&#160;for the year ended <em style="font-weight: inherit; font-style: normal;"> December 31, 2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 82%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font-weight: inherit; font-style: normal;">Estimated Amortization Expense</em></b></td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2020</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2021</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2022</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,016</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2023</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,813</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">2024</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,400</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Thereafter</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,108</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for goodwill and intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -URI http://asc.fasb.org/topic&amp;trid=2144416<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>98
<FILENAME>R16.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6763873792">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Inventory<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2019</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureTextBlock', window );">Inventory Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font-weight: inherit; font-style: normal;">10</em> &#8211; Inventory</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-cost method, which approximates <em style="font-weight: inherit; font-style: normal;">first</em>-in, <em style="font-weight: inherit; font-style: normal;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s inventory consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;"><em style="font-weight: inherit; font-style: normal;">December 31,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2019</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font-weight: inherit; font-style: normal;">2018</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
       <td>&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Raw materials</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,818</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,560</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Work in process</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">501</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">792</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total inventory</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,319</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,352</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      </tr>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Allowance for obsolescence</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(244</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(265</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
      </tr>
      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,075</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,087</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
      </tr>
     </tbody>
    </table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -URI http://asc.fasb.org/topic&amp;trid=2126998<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>99
<FILENAME>0001437749-20-003547-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001437749-20-003547-xbrl.zip
M4$L#!!0    ( $Q:6E =A2$"B@,  $@@   -    97A?,38W,# W+FAT;>U:
M;6_;-A#^'/^*FX>F&U#Y#4.=68J K/4<-TX:6,[G@9+.%@&*U*A3'??7CY24
M)O72O6!>[,3^9/M$WI'W//?H)-I+*!6^ER"+_<:11YP$^GC[6_=MO]/IM\Q5
MKUT9S=7O' =&*%$SPAC"%<R20L:HWZL4X5II8@(<Z+9[O7:OT^O SX/>R:#;
MA^M+<!S?2Y$81 G3.=)ILZ"Y<]*LK9*E>-J<*YTR<F(DC(@KV81(24)I1A,*
MS!(E\52JIM_PVM6*O5#%*\AI)<KIDIPY2[E8#>#X]T*1.^,IYG"%2YBJE,G*
M^ 9*\QO(4?.Y"^6\G'_& 70[&;F0L3CF<C& #I?0:76Y="$J=*[T %A!RK4K
MR.["IDPON'1"1:12,R>[=8'PEAPF^$(.0/-%8IS6PTAEY9BF?RS#/'.]=N8W
M_N3-#J&OW0B<DPGLA?[P-N$A)^AU6UVO'?KK+C:6A[];R^,[^/_#1X82J*MD
M!#>_!./WX[/I>!C QU]A=CZ$Z7 T#F;3LZO9=M+S97W;2E")3V7AID EF1DG
MF87L3 A0<Z $X9U*,R97Q]^?]+I]-X>\"',><Z:Y68K@>5GC*-02F$98)DJ(
M%:BEQ+BU=XQ[+#RQ4*#!6HA:+TZ;9EZSM.09B^XM]3*7/*;$ANJ\6@.GU(P-
M[\*Q:ZZW4EM*):I,1L&.&D=&\/6FDV@]6\?QG>-/J(E'3-SELA)*%^IT]'YZ
MM;F]U\$?9<;K-8^OUYS=^RI=U5RP7Q\PX4Z%"ZL]5^:N52E,4:F,C=VF^%]F
MH/_VV6;@0Z%Y'O/R;FUU92PCI3-E&H32H.&C7C#)/Y>_OY4J\ZG]+9'1W(Z?
M-Q,?2-(_9-_#+3]+ZCV^Y0.+_D-*KR?.36"JU[0MLJQ5T\E/)N_VBE8WDMN6
M)R#S=),?V+7!S$Y9QN.J:B^99 M,3=<#(ZV*[,"R/6!9B3\$"2+!)5*E+?##
M-+C\<<N8KZ'QHE%XPEH'4^;%G$5DVD.YJ-&V8.]$H1] WWC[H!4IF+#0S)Y0
M_7Y@^T _J:)?&*;'*MT32;^>K'6+YTK8=R YW%Q8"AR0?ZG(/]4#"0P+K2!
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
M_Y<%R*8D0*5G0W0WH3OT:AXT]<-G7CW2+$OJZN;YJ;UN/7T*[']02P,$%
M  @ 3%I:4"_KP+CA!P  Z2\   T   !E>%\Q-C<P,3$N:'1M[5K=<MLV$[U.
MGF+K3E-[AOJU$R>2XAG%5AI-4]LC*]^T5QV0!$5,0((!0,GJTW<7I"Q:LA.G
MZ6?+J7(1B^ "NUB<LS^0>K%-Y%$OYBP\>OJD9X65_(A?_MEZ<=ALM>KXMM<H
M!O'M#[4:_,)3KIGE(?AS&,=Y&G)]HA(.YTI;)J$&K4:[W6@WVTTX[!PT.P?/
MX?PWJ-6.>@FW#(*8:</MZYW<1K67.^5HRA+^>B=2.F&V%G++ RM4N@.!2BU/
M4=IRR;-8I?QUJG:.GO8:A<4]7X5S,'8N<7K&PE"DDPXT10K->DND78AP@5K$
M$B'G'7CV*5>V.Q8)-W#*9S!2"4N+0<^->H9K$96SC/B+=Z#5S&P7@EP;I3O
M<JNZI#];**TJ^'EEZ9\]*):%8MWELF[5A.F)2#OX$0[K;1RP_-+6F!23M*/%
M)+:HZ5GJFZS;:V1'3V]1^ME=7=>_OJ_2!' /%?6PT-_SCP:7L?"%A?U6O=5K
M^$?W;XSDT4/Z(D $<ETXXW@P&@_?#H_[X^'9*9Q_&%U\Z)^.87P&HP_O!]#:
M9[76P2[;@[,1M)Z'BX>W\#">JYH^?C> B\'QA]%P/!Q<P.#WXW?]TU\&T#\>
MDX&M5_L'W@:8V;^ _LG9^7AP<LV]:+ES^7ZSO4'N[(_>]$\'%[6SW]\/_EAX
MLMULMO^31"G5#SWXGPBLTH+!;W5XIZ3UT'7:BF@.-F:V\]_T3#$B,&.FM@/M
MPXPL:M5A"#&;<M!\*O@,$ZN-A8%^FN:83D<\P[P**H6WF!Q13>U74!&<:V45
MO&<^&C-,@_K#'?;F>;1=AS?,H!_1:<D</J9J)GDXX5[A6%UX-%1H3:JL*S$8
M%@PLG4.>6IUSW 06. FN2:YF: .27N!A1"S (0TJP72(_G=R:P(I#[@Q3,])
M)&$?.>JMK&EP+$1C4*6D)$LZ2" 0.L@3%$MQ.KBZ"F:Q"&(P.?VWG#_CFI>+
MT 8282060UCYP$S8&#=H,JR?2#NMFZ%I*L1M3G&:J]HJ;MCB9HF;_<_@AD,D
M4CP9.N3E27@(&A3'U[KR7J1%'8L%+'X.9![BFGC:%;=[B!2AY1PR/"S"&>%/
MRB60RC,T*ZH1JZ&@A3V2R"4*('I41A4YCAIG3\!,#)%4,[. EN838:QFJ(C1
M8&$W6NE5$&(6QJQ9NP7)$B0'=6QZJAY]]N/+=NNP:TH8E&F.R*BB2."C\_40
MF.;N5/&4A"\Y>1\X0LF7PL0D3F()!B(*1O0<"A-(97*<1R%**UD<;Z95P$,<
M-K"+IQERA$=Q9(-+;*[2"8<^LG^42Y1P]>CS7;[GIKJ"E)Z*1T'%3%K BM8'
M"A$5M!6G3[;<65%T35&$BFB?JQA$"<IX&U(&T!EP\)7&B/MZIXE-)Y>R["6O
MGDW&@L5S:>U,A#8FC<V?5K#2S"ZI27SR] EVU'HA/R5H!$PN;+$J<U(D%*XL
MNO\BJ]IIPUOD6B^=G'OY[[:DU6:T]!K;<QXC716+[DGY"3?XA/ASV?#+Y/ H
M40<L-W>?0AG3YPCT4E.1@U6.)YACC)P*XR(O2O'4K4.U[#)F5^.^YI(YYI1)
M>(E^K\P)]%)@_$9;C)(B=%<J)O>-" 73@C8@BE+!9:*45LH-I6\7:(S+]2Y.
M*\/1((MY@29EC%"62T;I!;?EC%B6 3BC*"JJM1!^\CD)8@; ^3SLKAXT_M4$
M:/Q+;-FR]O&PUM\<UMXYX:R1]^ZIZLX<1MY/14C49$:E#DW,(*VI_B:^,ATN
MN(-L%LP74M@YE50WJ:5(XFCF&%0$@6NBE?K=I?[+<D-9KC-DL'$E8! @GIT!
MKI*?N+M6B43&-SRC"$$BV*449,5((C+,OENZ?C]T#1Z2KH,ID[G+1(1E'D5T
M#S]%%)H;>HFKRO<.F;5XO+F]<.S$B9@53='$^"JWMUMPE]S/KJ0Y=6C1ESMA
M\!>]GPLXO/ $VM.EQ;<$^VX(%CYH/BRPN\X!NGTJFRKWYD:B?446I,I4!4&N
M">F5,O"&51-E+([3W3:N9?!LX5..520NO7O+E @IB_EI1;HT/$ BN8LSNE-S
MEYB%77N%53$S5S4S939'<1ZZE._\4:;C.4CQD<OR%FU%WOMF%ST26F_$I<?S
M?WKIX>ZUPP7FO66,I9!?Q=TRW!)ROJ).7.NOKDQCV&-9I<U5:>8&<,DD$=9R
M_IF$YBLL_NA]*- ^M\@NHA/SAZ'\A'^ITUM0BG_*!9KOZ).G[HMKL[>]VWA<
M6>%![S;Z$OL#?!;(';H@HZNV0' $>UDZ7=TQS#C[2+50T2^X:LAU.NY;B<4U
M\%=1J+P.**XG;PB]+,2)AE]%WEOI5O9'. 4Y@X#SBH+,D$?R!/>/OG";*3/>
MC1?FCR0J;VGU&"X?^EA311K#OH<@YRY3(4W<5V8EG[RB)!'I5,DII[HD99/R
MFS]=)C>>9%+-.;Z=Q:K(:.P:6Y%=_TK15O_><>]@7T5]L_L-1[]DRRK05UA#
MI"D,.'A5?_73O6'_!$'6@;?<USE]&=Q^X0']*NXF0GS1\OUZ^_X,?S/O?*61
M!2)JOK)6)1UWGPVM[!)^;+I_W87_7]RG_QNFL?8[E%LHML$HJO!OHT'S#7;>
M+RRVD'@$=MXO),XU%M&4D5Q]>AP+'L'@D@<Y73W"6='2;G&R@7;>+TYVSXNO
M7+!J6X/'6J%[U^KM_^1)5->@'\<?]1KN)_Y_ U!+ P04    " !,6EI0)-TP
M9;H'  #8+P  #0   &5X7S$V-S Q,BYH=&WM6E%S&CD2?DY^19^W-FM7#1BP
M'>> 4$5LO,MMUG9A4K?WM*69T3"JS$@320/F?OUU:P:88+QQ+ELVSN('@S0M
MJ=7ZONY6#]W8IDFO&W,6]EZ^Z%IA$][CMW\T7Y\VFJTZ/NT>%IWX]!^U&OS,
M)=?,\A#\.8SC7(9<GZN4P[72EB50@^9AJW78:K0:<-H^;K1/WL#U;U"K];HI
MMPR"F&G#[=N]W$:U-WMEKV0I?[L7*9TR6PNYY8$52NY!H*3E$J4M3W@6*\G?
M2K77>]D]+#3N^BJ<@['SQ V7MA:Q5"3S-KSZE"O;&8N4&[CD,QBIE,FBTP/7
M[8'A6D0=<..,^"]O0[.1V0YD+ R%G+2A(20TZDTA.Q#DVBC=!I9;U2$-LK]\
MV93IB9"X*C4LO[4UEH@)=F@QB2TN^DKZ)NMT#[/>RR=9O^OW!K>Q\(6%HV:]
MU3WT>X^O3,*CI[1%@'#DNC#&V6 T'EX,S_KCX=4E7'\8W7SH7XYA? 6C#^\'
MT#QBM>;Q/CN JQ$T3\)%XP*>QG)5U<>_#.!F</9A-!P/!S<P^/WLE_[ESP/H
MGXU)P>8_CXZ]+5"S?P/]\ZOK\>#\,_.BYL[D1XW6%IFS/WK7OQS<U*Y^?S_X
MS\*2K4;#$>6I\/K$="F7'WKP+Q5+Z-?AWVSNH>VT%=$<;,QL^^]IE*)'8/R4
MM@VMTXPT:M9A"#&;<M!\*O@,PZR-A8&^E#D&UQ'/,,J"DG"!H1*7J?T**H)K
MK:R"]\Q'988RJ/]-8;;1HJTZO&,&[8A&2^?P4:I9PL,)]PK#ZL*BH4)MI+(N
MX6 8]9F<0RZMSCEN M.=%.<D4S/4 5DO\# B%F"7!I5B/$3[.[D[ I('W!BF
MYR22LH\<UZW,:; O1&5PR82B+*U! H'009ZBF,3AX+(LF,4BB,'D]&\U?L8U
M+R>A#:3"))@:8?H",V%CW*#),)NBU6G>#%53(6YSBL-<#E<QPPXW*]P<_0EN
M.$1"XLG0(:].PD/0H#@^UI7G0A99+::S^#U(\A#GQ-.NF-U#I B=S"'#PR*<
M$?Z29 6D\@S-VM*(U5#0Q!Y)Y D*('I41ODY]AJG3\!,#%&B9F8!+<TGPEC-
M<"%&G87>J*5708A9*'-'VQU(5B YKN,5J&K15S^\:35/.Z:$01GFB(PJB@0V
MG:V'P#1WIXJG)/R$D_6!(Y3\1)B8Q$DL14=$SHC:H3!!HDR.X\A%:944QYMI
M%? 0NPWLXVF&'.%1'-G@%J]:<L*AC^P?Y0E*N(3T9)\?N*$N(Z56T124S<@"
M5C0_D(NHH*TX?=+EP0M%GRT4X4*TSW4,H@1%O"U) ^@,./A*H\=]N]? *RA/
MDO)"N&R;C 6+=JGM3(0VIA4;/ZYAI9'=TH7QQ<L7>+_6"_DI02-@R4(7JS(G
M14+AVJ1'K[.JGC:\1Z[YQLFYAQO-^-.: 7]:L]W*=,YRI>'H:\5LI=78@;,8
MK571Z)$6/^<&6X@_%PV_3 Z/ G7 <O/P(10Q?8Y +U<J8K#*\01S])%389SG
M12DNW3R4RZY\=M7O:YXPQYPR"*_0[Y4Q@1X*]-^HBU&)"%V!Q>2^$:%@6M &
M1)$JN$@D::;<4/AVCL:X6._\M#(<%;(8%VA0Q@AE><(HO."VG!*K- !'%$E%
M-1?";SXG08P .)Z'G?6#QD]-@,9/8LN.M<^'M?[VL/;! ><.>1\>JA[,8>3]
M5(1$36:4=&AB!FE-^3?QE>EPP1UDLV"^2(2=4TJU:5GR)(YFCD&%$_A,M)*_
MN]!_6VXHRW6&##8N!0P"Q+-3P&7R$U=Y39#(^(1GY"%(!&\I!5G1DX@,H^^.
MKM\/78.GI.M@RI+<12+",H\BJLI/$85FPUUBF?D^(+(6S<W7"\=.'(A1T127
M&%_E]GX-'A+[V5*:TPTM^O)-&/S%W<\Y'%Y8 O7IT.0[@GTW! N?-!X6V+W+
M :H^E9<J]V0CT;XB"E)FJH(@UX3T2AJX8=94&8O]5-S&N0R>+7S*,8O$J??O
M&1(A93$^K4F7B@=()%<XHYJ:*V(6>AT46L7,+'-FBFR.XCQT(=_9HPS'<TC$
M1YZ45;0U>>^;3?1,:+T518^3_[?HX>K:X0+SWLK'DLNOXF[E;@DY7Y$GWKE?
M+55C>,>R2IME:N8Z<,HT%=9R_B<!S5>8_-'S4*!^;I)]1"?&#T/Q"3_IIK>@
M%/^4"U3?T2>7[C6V.=C5-IY75'C2VD8_P?L!M@5RAPID5&H+!$>PEZG3LL8P
MX^PCY4+%?<%E0^ZFX]Y*+,K 7T6ALAQ0E"<WN%X6XD##EY[W7KJ5]R,<@IQ!
MP'E%0F;((GF*^T=;N,V4$6]CP?R9>.4=K9Y#\:&/.56DT>U["'+N(A72Q+TR
M*_GD%2F)D%.53#GE)9)-RC=_N@QN/,T2->?X=!:K(J*QS]B*[/I+DK;Z]XY[
M!_LJZAN=;SCZ%5O6@;[&&B)-H< )KO]8R#]'B+7A@OLZIU?!K=<>T"_D-M'A
MBWH?/9[:[^;MKU2Q0$/-5]:JM.UJV=#,;N&'AOOKE'LX/GV\31R:P^J/3^[A
MU=9"IT*Y+4;*-VCYF%C8X6![M7Q,')S%@D=PL0R[5\5%=8>)+=/R,3&Q?UV\
M0D$XW '&G<1UZ[(QU(1^"]_K'KI?]/\/4$L#!!0    ( $Q:6E#PNWJ_*@0
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
M-@ Z45<S8P"0D0%H  " ?I]C D#?W\&^$\X[ >+V1D;6#J8VCL#;$B "0$%
M0$* 0T%"0$)#04'#HL#!PL# HB,APZ-@H>-@8Z%C8>(24!+CXI/C8V*1,)"0
M4U'3TM'B$#&R,-(P4]+0TOPA! 0*&AH6!A8-#@Z-!@\+C^9_^WCK %"@02E
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
M;;XWZ;UGT0+=F%U7*67R43S76"J7\ABLDYYLZ4Q:+=6S.'@:X?"F7,USNXY
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
M6VM0G?PY!4?<Q]1.M\-/6/X] _I>(;8 F=,^T\&H3)]K>>*FC*IX\LEU\VU
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
M^!SRD %HLT:.\&'8FE%"Z].%?S-$Z<O7T5N^*,F=&!AK;E]N#Y4 A9ECG5N
M.-:PY$YRWV$&!^A(7MT5NRJ([E@&]T5IL.LD<G>?F7^T3/B!-U=:_>D951:&
M<MD)>]?/@JR^/+:JVXT4]"?E=@=?*_5TWL24=-MLQ!?H$/(5?R3*I7T:7W4G
M+@I3W./A76+3.R8(>W&MV^*EC8;*X*[C:FL:^W;&RNM1K=HH.?S>FCFCI#K_
MGXM0^%[F%MHP"4#LYZ$<,BH!%U(TX(2$<S,)';ME$EM=>8D,9?K\NBPYS^KK
MUS:W52&*_2Y0<4K\4>W<]WO_RU^Q@M;.G^'0>ONKD+>OZ,SB.>,R:@^)[W"(
M]O_"ZI?MV5M-."1/N)S5Y>Q.A\$/RA,X1O:9EGNZ7]L2A#.7JIFX0>&?'<\"
M_!YG0XI,<'KMG'^DPF 6C9_3:_[OAV,S'J5T64A7[%QBL]*0W\M9E=.DG*5.
M%RII+WD6>LRZFEHKIY<8NWUJ+2/PJ1CR2&BC+'T:%!6ETGD:6A*,V0A-V)FN
MD4/>>E<@,2Q3H2#-DA)_]LUTH@C]T3>#?\0C/G]<N__IT7R%%;XYQHS>,!S/
MA)#V(T@[+#"5777,*YU[Z+YS&FGDM*NK]@94A!H@M&P580D$O&OW??R3+@I#
M$'W/KT/X)16NLA4P/$.@QR#5[D@0-Z[F'_L"C/*9][; S8) FGKITU.N+AT+
M!*@H*7^?+^/4C)T4F<["X_35=29$=DR"+RQUC$!"TG-QC>H!78!R?.4\?B'H
M#EI<#3 O&@W+.:#G3X.0:/=<6?.%T8"8N%U(Q0*GO]>=(:="RW3.Q5_ZR/,L
MT@"PZ^Q&">P3LS4%$^%86ZY[ ]J6GJE&[^[HV\_>/\#VV^"[>C&6'R_>!/2F
M#H(/;K</G2XI.>ZEOP?<62N*V;UITKB49M<$]0]Z6"ICB.X$<2 4-NV-5F^
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
M4!!,[>KY350^?\""P@JC^=T > (&H:+$\@]J\RV]Q*T3*_SNKOT>8]09CB^
M4,?=.[]@<5=GMZ2C*8AAFSMT3/=W'*H&;:^UH%GT])F<2,DT26$HE84AAOJ2
MRXI?@A):>7!\'KJ22AA<K?5TG%0@=GM[>7,[QW1D<[R<R^Y4QA< HK#\/795
M&CR^8OQ&7^CP#=JPU -/>3@--)K>64C$AF1P7:FGW5?H6PL[$W6B!W% YOKT
MXR</:X6VUL"3#YFTQQLL?91UH[&)XH_"Y*@\V.42_ %IS-^N(!&AU$T!A> 5
M^ ;)5 V?_A? @TMI+-V5EU/S^=T32-P8RU'O0[-7]6*MIE/NA_)9.&14>J=P
MH'/.!SO'.NGF[.!<;T7*]KG<M.W[Y<$7.R6>H0D"C2T5*1A:9(1B BML=4D
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
ML9G2S&'%RO]'-:H7#6C/#U/27^7L!0BUJ[,5VUF\6,$WBW)'<.=)%+)YUY4
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
MBM&&_[1MXLX.]>>!HN[.=>A>55=E+2TQ=.<D'8U-3".M ];=_:@B0\2L^R_
M?&DD0>2VRH?%G&K;E!5-7?R(R.SE[663TNB4"96)%Z"DEG$7%ST^L*S0.M?U
MX_Z'G WTU#A.+!5EBW]?[Z3.?++R:P1=LLR$PLYML;3?DV/:=@&3EJ:T>@Y[
M8D'*CMNW8&>/8Q1I/51C:'!<Z,1YAK>?7G;<DB3%A@G*7)W2=+G%*6CVECCF
M1SFE(@2ONY)K^UZV>Y:)Z %=%OE=7E0C_7HH >%*4*SW5EQX)H?JB*,EQ\40
MU!OIW=A Y1@?-)_4+R-R5=ZZ+1364VJZ*E3=^-]_,.[\5"988[93,(6$^MP5
M-C<W2B5L??\>#,DJA!9\>[LORP'1-$Y42Y7>L[3F6Y2L3F&D@)V6-$;ZMAS<
M[^#D/%!N,2NC-<VV\]KIU!+^FR5>&D*YWLZP^])RB<-%:HALTM3%\!5"Z6J?
M[;.>O65> #_#%P#QUP*_7@^$?K'_&#OXYNX%V"W+NKTA/LL]OGP=/-K"IT?"
MZTJ_V]>/D\WLIK3^RNDU]/><3I\4+\A2S!!/:[QJ%6K7XF+AZXB&;M%L6O!=
MU+C '/7*@[L,4X%*[716?7M'-AES_[P3J+6 '9WM86ORS)2W:@I.6Z(7B&H]
MWT<+;UZ@52XHO0"XVLVI>U'J@I@V#1)J%YS$=X]!+P#47S>DXHK0[GR^_?U*
M;I%_<37Y[EN-_@L@?,$XI5YF!O;6G\%F(IQ,!,%;)[[RTAI-/&?ZE"&G%E@L
M%36R?S-N<L+N/GJ./!\K>J7^UV+KE/QR%T.I*ICAR'+46O../Q*^GS.K^;2(
ME.%E7]N%!;$U'O@>4'4Y=*B)U1S'=6PZJU*P?\2M%UJ8<#'-[S1PF?O _/KR
MLSR$3RN?VY2>4O[Z_6%PY=.?SV=%%;6E7#4IAC_K+Y%M,-]5ZA&XE:@JG PZ
M6MJ$O !FEL*7I_!/UR_ K]P']G\O0C.<WC08^H_O""Q4Q]3Z8<QMB8*P0KW%
MCG<4%VAD?#2,@C:VU;C *C/C\XILBYN,;V_6@I?FXT/7*X7QN]Z?&DWZR,!(
ME^;.$];@V_,T<[Q_YZ76L9!$?+EN_0)\P7VDRRPO7)#*TQ=P<]L[Q"--PH8A
MKJ"5Z%?L 2>HS]5R%F4_;5[G5''_L[].LMN%^HK9LRDQDM0MX0N[5)%D5> 2
M9RC7RY" <87WVLUPO8/\W;8RE2BN=K.QB[U!,O/;R3ZZR,X5[(D"07_0[S"5
MR[C?)8>/TQ34QJ,0IU%MJT1+?2EH-J8<,0:K^/PBS93,'.:/A3#!M,LJX6/#
MF./'%-U<EP;=>JVKO ",Y;?"H&TMP(]*.%&,%'S$?V!ENQ:)4@4/I<@7?SQ
M-(?2GEUMA2EKN\/TCDZR>#"FXK3WYK#S1VE!+%6\0AJ'FL,88:^8M!Y;YD9>
MA6UTWLGKD(+^VY/E%G4QK.B2E57U@UHEPD\W"8@+_/C:I'MI1@S0O(I:^.,I
M\LI&@W&B&\/_2,$,5]=2XX<"Q$5KR#%656;32CZ_K/&B5[3\82<8 ]UB^1T&
M*NO40W96#MYB"%(NDFT-U ':J([IYS'E5CKRR3AQ(^]M- B8;[V-ZC.F68+3
MED8?^'H8XC[_E$H0B'"JW.N\0&61&CE68@HVH:5MS]R6]XST?Q,P\;/?RE9U
M!X1#>)-SHN&WW \G36(N7'A 6Z4GP@EC_[.5F7MDI]E?IM\QIM#+ZE@O"9Q8
MP2=GW>3R8#&19!I9#!8XUNS<C\N\_B1<(QVQM>*;H!A A-ME',TS(3ZKT:%D
M-2C78IG7%,;1 ,;HQ2./Q([[!I\IR#?;K9"SBY4ZF_KF<K6/LU7"-C<J9V7@
M%&J/+]I[/E'C9R)E'9'>)VE)&N-!?ND#GE+.])5ZCH+$BL!PFB*._]QY6%W1
M[A#\(%H=5SCE^#0S1SAW$B^ 6D>W(#V_\BM'__94%_$"B%IEY+7'*%4]3X3P
MRM&%"?1W(@6,N0QQ8T5+UQ;\?GCXS:B69\0N3$RK%PQS+=1S*,_-_>[[RLG\
M"@\2+%C"9E/PWD&HO>Z3UDZ:LFG3YQH.?X0%R6TW8&UWEM@JCMR:(C$?"0"S
MON^/U!M\ 5:@'Q^FAL'2>M.VU1OZVHJ$MMN!4HB*[P(E3#\0C]>!99"C2(.'
M2) QHO;H.EFT>XRFR2!HE+,GF_#0Q468I]IH-P:'SYOJ$CHW6!G'SI]ZGD7G
M7X#K(;]$K9(;X@O45WVA0NZQI,]IQ,UU8/T5T55I_G/DG4+AQV";CN7D.\3@
M_*GU5C:!^B&',J>^3I+9F1=@4&/D:<$OME#@MI04?2&71H![D37N"J(WMOA<
M**O9\$.ZWG]4.Z^6(CU^!^V\5(-X8<'O://MFOT%1#A#T+R-#E(V)4U,<WD9
MGU6(S<#,$:[02T:>"<2[7V&KS.L+K2NM+S_M!;UJZS&ORD_%I=_>?"DS6>$*
MI^Y?(JZ_B_(Z&BPW354U'0[W->76)%V_<.E*:6XK6LZ)32]:;$)/D$!%)A#,
M9='YW;U.-8-&M>P8_ZZ>:7I[FHC%.";:(?R&U?HOKZ#/R[H@RGIN,WH!)K=*
MZY)=&>KO\\;#F$\9-]5<ZSW5WIU(D_J&EH8T2#J[U7#2E-D?(RVWUIC_>J#S
M>Z8KZRL.P C;:+9DO633&LY^@H(GSN!6E)8MT_XAH?H\&_'L\<EOC2#K48%X
M,<YO FGB$3K^!0C+'R)KVM OX9MX#+![)7TI^?^84F.V4F(^S1&&ZU<415B=
M:%TL\I/T1KK1C'S8.!,CN=9?6)G8?GX_K6'6]2]3H'_0Y(X_SC_HLC E407]
M90JU-3I;6Z%:L-2_+&&^J#N%6];]3/^X5)#J9*_9F&J=]#'Q\K._W[(R_&:X
M=1=E^6R#V["I]D_3B#^-(%@_U#DO<&G&JJH>^@?)&K-+^;@/4;>S3PMHN:AC
MIQJ,%4EK;(D6VXI$7 <=&X+[\3J8W(N,>A+<YR8^U=XLSVT2.)/25-X1X )S
M*!%%=2RW";\*VG:-CE)P4T*$FJKJO-F/OUJNG=J<5ZTK564:SZ1!#90B.Z??
MCK->E_.%["S2%X4KO.^ MUN??/)6[UK4)'/<B9"45^ L-L%H5FIS1)>_:X)F
M4-KX\KTTKK?JL++F5CM4J"M=5F9KLQ!$*-PF75HR8)/KVAI=@@O/:\?:XFZ<
MZ1B>.3[$F,#O<YG8"\:0,5Z]+J=D*F -:I84Z]8W;PS@EJSF?\NUG;8#HF[J
MUPI8Q78%+8F[1.I<(,P*V(P$:B&O&:"-JLWHR!!.*Q6&YKK!2..3$/PU+ F>
M?2U1ZN9ZN_EG\ +8G/'H=X@6B%9U"BFFZ% IM9/8<Q<D+^ZV,]Q.MC^WHWH;
M_YK.^<PU,8I"#AE49BL9:!FU5\R %X%CU86;AVO0>D]ID6! 2H!8C,R7V(J/
MO18KU4U_0CGPL-JS/SG]44'+J6"F,0KTOJ\&?4L@+BD>YOEL$]\75=!K/DJM
MMAH]3K!SU<E)^]8<[T@867UXV&YG=D9V_977O8?%"@@RMX0G=)3[]W >E(R4
M@-$! Z[R72A>*@GOP%F=7GW+13EIU/$N<FB)B.*:ZB=+:W=V?AG_SC?YT*A0
MQ/,I3W$O@(+Q"]"!I$\PZ2B3WEI'3C7Y$/:C.6(D=7&K0AR9%@;]!$4"44=W
MG#)D>ALQ$A;1+7IAH()_IJ-:>#_/[W;=XOD5!0M>BUD-SCFKJQ#2B5KIBVFH
M]'Y5'4Z7E9L2.!]5V6IEI[,_LQBDP[T Z!]? !._&>G7N]TSNA(:!O)%B%=D
MV(6XBOR8E*K2+:\DDN30[WZK8[A,S:&7M"&:1 Y&N4GPC$YVUSM#I5GZ%?'$
M$6FAX1[RB'_D_X?-&HC._P9W!7ST2XD*.A).2B>)&Q3>!A56<HV%W#B7N@QV
M1BN(@]NB@X2=0HE$S.ZG#]A))RVM-Q//$17FWG5VA?*V)J>3?K\+7H#LJ-5M
MXK_:*PK=T^([.F/^[&6[>?'FQVK1*S6KJWR&>85F=*F4?[Q2*ZN73W8K6WR$
M_@O^)/\5$1,_]>.1U$&XEG>DG-YMH8SKXG5>EV*[S.54F*L4<AODA-.+_9=C
M;'7/<>I&V&KI]+%]R#)G"S2P1.+R ,&5H#NY23JG!K9PTU28JY^C'$='&+(-
M(.HOH9P2Y ( FP>%P6QJ9:C.V)$^!3ID2<3$_%V*]'XT%(C@NAS[;8OG]U8)
M3N^K)\7P\-U*5T(C--2^(K2:#P?L='R8C9C^DF@$!'-IAU$Z(W+13H:)<9<.
MYQ\4?S^)Q4,.Y1:$MKTM;KAH2N8QAC@CG>085)/QO\8&8G\SCIXSJ[8:[Y]R
MUWR=N&/_XOEOXD)5DM949[E5:G\FB@=%Y_@3Z,GATW&]A8'>/U66LB8Q$$=P
M:!3ZS-\V;M46G#C62#Y&Z#P<_V1U HFY.R3^EWAX;SPQ7M_X:%9L#I5)8DY<
M!(&=!GE1/L3Q!1!\[<;MPO=7,\A]B9%QVUZ$WSHVY9&PU-T>/E@WI1"@R@:3
M;$)2T]\-(_#"QUH"M:_*D&;X\[1G),NR*$4N;Q0%[+=U:5=Z=&ZPO6UO2_T1
M6\71O3'G.%>&M^/&3J,<KV'$\5OJ13W8[I*UHOOYH+".=6:YRJHE$,[O;I/?
MK(WUSK\*VUR:5?2]",)K'UPYS5KK&A+),W= &<\'K?XX]]#R\:I5(<98#?7[
M-#PTTT4V3^Q:@8R*O]2;4Y',/ N:5'8$=!-Z!B27^WDWL<W^R*_05#7*\7\+
M6:;0=!6-_ D:$)B^45G<O*FV_F I5ZPE2AON#?'8(E395I9:4Y"]99&BL*28
M*AUY+M?N9+XB/*1[ >2T'\6->6JB-B'4BP3]+%]4HE9:Y]U:"JRXFUOT%R%;
M6B7X#HK(7PEB69\LHGAD%Z_>SA7CUS9G\&1277))EQGQ.!12*OVXX@2U*$NE
M%K#TT,F,K__1^)0^L_CI $4P:AX2UO-#^A;9%GJ^GCR$9WQ+C\ K_O&0=B#N
M]V+ZW5S_4P7:W9XPN:+,1EQ];J OG6RTQ6C813K?1>%*]B0XW$3UK3$R')H8
MFO&^8C:<'(?&.1YU')G$P7@GU)]4&]RD7[+]BQMX@4^;! %5UWVJYRBUO[P8
M8A=_>"+] - D">:\,X0.YB'*S2'BKI[."%'JY+_A>/;C#W4ET1U;O+[+.JM6
MZ[R/\+2Z.>;3ZYZL7(F51HPIWE>(4:E.T?_1VA!GC.=478PHJ"2@R6Z;^_GW
M7G-!*N-M615]MTH8;&@/JO>YYI4OUP[]84!IJ5Y2L J50PN><*,::O;<< *&
MW8Y*N4IMDX*'*Q)]$MG*Q8IJKN-;NGKX2K@,V./R&;;%I1YVFB'T05#,*]'W
M9;5EM&\]Q%J:&:GB*F+&VX,Z0N$6#_2V'@@NRY<SE>]B.(#N?;LC<$O8)U>(
MSR\8H4[MZMI4R3CK\!/5,3X@/G*V*P@Y/->]D'$D<*&3%\13O%D=3 YM?F -
MG5<EH9DT!R-OK%\!)[KDP<EAV\[I..7/ :5*[UK5: EE!$['\/LZMRBI?* >
M(@HBG_\1%FF_->@D,LQ]^^U/.) 93M/U"ITQXS&C%[=1*PDWI&I):U!C !8&
M[ND[H3I]<L_X44\3A:5@50"ZP<HF*5*7]'$BH?+4<Z"Q#] M&5"IQK@SNU@2
M.DX3F!L_E3<OUQ*M$QGB(<YPG/&PDV$F>M25M9/,SA<1 -V^T<6NHY%46C'#
M+E'$V=+DFV\*8,*!2V5E1RXS[=\0_*;C)$<0?4@0?HS7$VP@F^4GN\/L4KK@
M(S::M/TXM)G(7"WL%,ZK]/D%T+?0OIO7J2^X6%BJ5F*KM2<P#,!W/%28UF@V
MZ:]-+Z<T=9:I/,;9TJV;?>/D0,8&]-X;EVM5*/7R^9[\*"M<L,DW,-+JW0+(
M;-=.X'G7-#7@L$QVH]OKV ,C/RHY%<\FY%/,=PN$9GEL)+SKH7.BYU>K3=H6
M"5TSORQFM-D)A]5HCB46@36QTR_:%:= #7>0+O#-_'QW'W_Q^2SWZ.(5F6:S
MP"] ,/ A5GH:1_1&M &D1S@PG_<@L'IY2_UT0?ME@OGQ2>:.^8_*C:??[H'2
MD%_W=]2&N.]\TE\\(##WT0,7Q265"\2C;+X%(KT&Z:A9B>)<60+)*L-,WX,/
MLY[K2)BG5/1[S6N2*/IWQ7(=!DLL"P70;*J.3")X2<5@AR:03J>K$_)Q<YK*
M2/$8]:/HZ+%=%MK'/W!-+38F+L$:AL#SC M&TUV7?W6[3<8LDRUG$C*<C73.
MZD\PYWK&R%=\ZR,Q+!MR094ZM2D"2O<IS$6^$"9*U( H++@3COYAD\+(.2L$
MC7OV>]_/R:JJ5G^09'5LB<N5D'*(H6P-P[=Q4\6Z?Y]=K[2CR^$V!<FS$A61
M.KF_&J@D3L1(S[G2)"#%HV\PEHV<5]-Q'76@PR&F#TC?.NJ$/R>DX^5(3J(O
MBD0(T7:_*S1<XC8'#5R6+6N_ +0Y^6@[7$5EO\O-=?L8$6VTW.PI< C0$KR0
M'XQ^1"@DNM0&\FBLJ-E" CZG;Q8O C>YBQ-W$D<_'OO;L+,H\Z+H< ,H>_FQ
MP,(N2UN1]^=W:LVF'0LVJIAV)/2S;SJX.X:!TLBM;;/01)ZB9;;MO^W:U"B0
M_&?;-CGA%T@?'%H@#VN9GXX'3G8+^-1._R8/KI038)=BT'1",!8S#\1=7/?;
MS;X>R%?#C*]F*Z8$+><JV@HM;AS;F84*E(2P:%W!5Q+2T5Q9@^:QM=A^2DZ1
MU>! Z19M76K7K.HSY5LE?7PJX:[R9!M_)\3Z;8W(JGQN^]<C*<[MB">?WK%\
M=3NWJ3_O]4:#<F;X+G^QDJ9MU&:^#B'[@T"_0CWP6^]JW&N7DW(L ==(F(>'
M-3V7(O+K%Y)YQ4**,RL^UUJ,%1F""*ISK"#O-4>P]+.KADP=#ZY<X(5<+D7U
M((5TG@HY,[\H+_1U7O'0H6-SE:9>H;BY*6QP"621:C !#">SE9[9.CLWJD!5
MBOS>A7V$;81SIO@CBX;)EK^66<7A&&/,-XHD_*;-)+;"T4MW(FEXZL:=_!GW
M5:=<=9H6QJAF>NJ>9.?E_0KSA/&JT?,!WD.ZH*YRJV%'Q_@(KJ\)&WFO*G\Q
MPS^JMO3"QVR0 SFKV).P:'$O\WN-8+QL1*^R6YQFDUN<<I"%2GK8NY\&\(H(
M _-%>@?)]2O8[Y-(P>X?7$7Q$+F-(^THKJ_+^4=X3LM3WZ9*1(6 )!_<T<2/
ME5\9*(20^XC)U -N"2X6#.Q!76W41V:#FP\,>6:=?"I_9/TXG#ED=,+A"1+'
M>-=(?ON5(.@X3FFF3NXA]$1G3[<LZ6#%AA2/B)N0/V-8Z@O==D64J3GG;-)Y
M==VO^]7TM>O]_7DP(<;TVU1E,W>+UO0A6OOXZ0K5?'?3'^F&VA1ILWTQO0U1
M%O&T=>EU-:.'!#8"!03^BIM9TW5']G:?%:TA]1JB1$\1-E/UCED;QG&GX=4<
M#X[Y?N:&[6/;=][N!,?WTXL+E#G',H5Q7,=(#,'^6/E\]B8\8B5>[5EALMV[
M']NG)1;;4ENG3D+8\0V=9YSM>#<GU?@43LJ+%L<XQLQ!&A:_;.R^F/+PPC81
MAY;C,W(1"F#7>W[UV:"*3=!+/^-7P4F#;<M+.N.HHHC62W#"I]A:F]X-:49;
MF)WYW#M:.W\BO Z*UVQ#YQZ6'<! #WP+HJBZN2I))J*8M;5A2M)B7+R'C]F.
M9)74Q".\3(7433/:''T:%V8]7L)F'7SPAZ]@GRF70/M6^X?A>8S ?ONNE';T
M*[BG0*FP3B<#:WDJO?B7I7:<Q?L9:['MLP R4Z1:@JTB:N%HZT_%^_?J!=_-
MN"R&=MMO8:O9C_<UZ1&CF=RC!Q0H.6$*3@:);S$].SH?A:N._/)E^+^7;\5Y
MTN6'^(H45H>HE@\*O"]MYXPZKL@#H/RUJYH49.NN&5<607S<H==R8Y(KC&+C
M-"2I5'$F$O99T +.&B[+7W8.;D@=L63LW:HYB\7<H[[]N3L]UOQ1.V.[,I>3
M*%H7.8![ZD5[?5V@L[^HD+C5H'$40=$$S[;%I*@(;]_=K"^K^+S?7SRO<5NA
ME+LR5+3OJ#>*K3\$0^781=YF"CG\%5&91E\;L,8.PLY1+6^Q6Y.F. _OL#0W
M-L*V/375F@63<^-]\BWA]V67J9]-?:)<=5J@W$ISIVXDJJ-3BW?7397E3(W*
MA$1-N^(?RVPS3)%)T1<(C3[Z._8D]?LAEAM6ZK<WVIQBP$7E@[$\U$KM1%"E
M*<Y$'P^NZS*B<C'M/<EHG7:$:WV:!#T*M/=3%1(?5OJ8#L/8D\&V2YF%AU*<
MC'9A6^4GAP?6L^R#(F^)[P<>VE>N\%L<V'=)!PPZI]YPLPVSG$(><J>;QJLZ
MC/RA$L;AV&2RM74# D#$XM-E*B+8MW4=&!E35ZC>WL3GA0))T\C2YPV"@\6.
MJ?:)Q(^72@];RC#X-FW&C_LM#-X)CP?SO4<1=ZK'GT]BAOUIF1?40R#!"/@>
M\K?WU\4FB4R(/9@AR$Y_!+'\HK0ZKX@3L?[&X8W_!'ULFU'];3F_[\@PC?V[
M$^S WH^P&UYI66:%*X3?U.$2B!_A%N]BQD6^32AT(WK[1&_FS6-GWI"D+ =I
M_S/(T]4O_+["Q?MSU8A5@4FXN7DLQ5<<QEGSF<5F<CZ?8L[B$1KU72<EQ3[Q
M$OV^@OU?&)Y,MV!)!*WA8 V\Y_/=E?*#VVDMW1X*NKS6?;P5]AX"QU-I%UV-
MZI"Y3&<"Y/?D.QF#4O+$LBZ+\MPXSPJ]O]@JSDG,OB>I\AE,[Q2Z].=J)OY(
MW7YL-DLW#U#N^%Y\66P8Z#B)GDJ9>4-(Y!U/H4!&ZKIL,^0/+Y9?HY0F$[(Q
ME]V8NJ-FAI+\'8S "Q(L/BZD2 +KR@B.Y*6S6LK8>)E/@Q,P)'AF;3O(H@/*
ME(KOIE:DWH^]S]UA.*8[0#B<G!]3G7$I5:"""Q_"4T]SQC'J/8\NJ)B==72Z
M=:,#_U_MG6LT%(H6QP=).!YEN#,90S7>39)H%#DJ;_(6ALAKF!H,F3!T,%()
M=3!(T7C.C&=D&H^($N/]RH3!5>,Y7N49T=QNYZYUOG3ONE_NNN=#'_:'O=;O
MZ]YKK[W_Z[\S8VS#;P&MG3)O_6NI(%#@95'T=Z-B8=@ D<[+F)X0:5=/2<"O
ME5Z+'B_6?1Q -<#7$]Y(&P):]FDFVBNDJ]*WI/L"+5:+YSX3->&^0RYAUDCP
M3O7., /3X(P"S_7TY[\<O-G^%)XOB\Z<D$HZS@HB>3W^D&+5Y_[67\HAS3AI
M+'E?][=Y$O<$'?DU77('RT]<')>M@>E(@EK.$GO4 L*<MJ5;.1N)[RB,D-AJ
M_'XA;S7)1[BP<V?P ^LB^@ODY_$(MD]6/ 'V2#)0X]W>C.MWTA=^\\XB:<7;
M:T4-,V:TR1V%!6_3>D+4LT@>C4 7+:-SZA9XE'#(7@J5"J<I=7VP5#1#EE=N
M)8,SU>!>#$2W,6(2ZZ I<OFJQ5E5UE5]K##%Q_/8V,,61*LN&ED*9:Z$7K;?
M'55I?TKA">.$YG]EW*VR+@1/^C:V?#WE#HDG0@Q& @JS"X*OE&2ZAJR!MNM&
M:*2W<LC@P,Z2B+$F]=X9R#0I\J;EPI/%?:76[-5?O,V;)58Q>R)H>9J9EC<P
MV@]N/X=10%N5ZETVZ>=,3G(!%?#1XOT/&$/VL"Q6W?9!6/$\:F#GML#MOK:0
M'4T1,Q>,"O)D;;1E=N!",E;V2+:17L'A^::U+V%Y! V7NJ/8 #:A#9XD "5J
M3M^'DHY\<>DY L. Y7@>;S9NXRCLWBMQ3":H#")MPW(E(G'A,?O>*%3H+/5<
M)+C93UYR7E_P;5R&'9K<'Z>WVK99/A.]4^1<3!YJ)0^75AUUY$4J@MNT=42S
MT(.XI@;[R&ZAM&G<T!\GM!+"#W<;,7BSJZ4OT?2XR'H=QFO/N6SB&2Z@)& S
M45Z55@%7S#LB]3'.YE""I&O1.=&_]>+Q=@'D8=,[R4ZL6L/C\7W*0KIQB&*@
M;=W2,?NA6W ,>V6G^K#E4?%'GGP^X>R!C^0JWZ6RV9+9H!)#TUU=Y37K&]4+
MI1[*BZ5+J?#._>:D24%Q+3&VN9:4H63L,"LC=<JJN4Y_G4_2(U["5]MV]@2B
M'\1$6'L:@.SUH_2$(H$VHP?,W'/CE4#_A4,*CTA?!K+B.:!MZ. UGX66!H]F
M:<@*^@V01_28=(RG_FB9"7#V@W%KNS;'<<6$JD3:T[@&= \7<E;B.:[+#X+&
MI,4#S,7T#05(!;E1$GR]-^VJ_M-?BQ\'N':E>5OS58=LQAN0H4[E# [1R$=8
M=J*+PQJ$'>$YWD$5Q47-=DML1=#,O*L\"GF5E_/I?1*3O>GOB9.+((^BY&1=
M+LF@O[6'K+(27"]5D[^]'!79^42T"0L<B;W19Q*;>'B/LO2K&(3N9^IU)?B'
MNLPQ3%8*JDW[;IZ\R91LH?%ZJ?S@A?3^D?,86*(POV>]P+6/@CWAWAOUF"L4
M89/^<],:<E<2 @5;W= S"<JV"<CLNUR \6R6Z: W+*?85>]$4GH^B^7*L90I
M3Y^J<105$[)]'#XH(]H26K9H\1;JMI31W'>^*B5&B!%YDT;#EI6^<.B/3.(8
M+TF:GBB:D.BSU+UJ*&C>"TN4;G;DM;D(CDRT\[5YG$Q@K0,K)'.D9F1VOO@&
M.V#-N8#A0"/(/<TZ4Z\Q,,\)45%+&<Y&M$BMTY8MDEB_%;OT2=QE)J4.0EBG
M=M=P 1)\WKM/PJ9%@VF!EQ!C[PK.;B+I%2^080Y&$V"9O0YR%WD"3.W8IF(/
M.S!:0LFEFFT=5^=?EF^E7D]4&&$Y-GC35IJ/-9P7#^4/:RT]998T&&$4\8FU
M\(L$(^ 9$=PT1DA2)4%;J*^IPH_:W.GTY NW-G1(%"LL8W*2/?)\ _B^O9SY
M!:RRKMBYV,]ZO$BC]3+E%< &K<L6G047VZSNIZIYCN1^W"T8*ROU@_1V3-[)
M-/"(=7\Z%<PJ\!_[G,SLW_C =)Q2XPU M$B3+T9R!KOSGUKL$02F="'D/<]I
M1(].?E3]W2IWJI-<A$*6NZ43!_K-UDZ<O$.B,\VQS@P&*U/;6<$A@0LX4#-K
ME#-=:XJN\.)/I1Z1-Q& CMH6]^=9#K>T97NCR_++>O_0R%QS_XN+9'@=/.;H
M>B-SX>_\5B:UAIYZ76YO1;#?25(-4"K8K#(_H>08',?G?&%/ &74Y;5\C42U
M!_2 4V@+CX@5^BOT8,E*^\"=X3P[RQ1Y8^V>RQ-LX/*!,++%W4,/W_LI7AA/
MT <7A=L-S*6=+F?Y0]\ONBUK2*3023VF[RG453S8:&Q\)L=D<&JC+[V>EJA]
M_9E"EC=F!H"YK'7TTC)F)[3+]YWV^X=+?>2J>C]GCWLG;V+;FM;F6]"8 \;Y
M,8;5U3YO^8SE$Z>U;5,:7=9V5&8'[YF\<>8"<K+0&G4V-^@!&F8+1E]0B^,H
MJ!'Q&62].]B.)B*\2$]4<0'E9BC5W/./:!2#;)3,2]^CGS8:4=CMO'_,,H/U
MB+!9A%%Q/+ALO]]E6;U"7*Q*:@NW&IT=MNQ4F\I1#5KB LPRBT*4ZZCH]( S
M,N+2=H#C@,8BJ0T)I_'NC55#^$Q*I^]#017\Q$Q]D%0Z?:Y2L$SAR,**^?UI
MB0>7MO>[:B4P%\EQIY0&0)73JG$XZZ3\ V$[R@/-AB^2IVAWB^/29/3"-[<>
M<+)!!U-7NS:BI1F<]H@7BP#WI!?,6\PL6+K#ID-EB6UC@:#741E+#QZ9^5/Z
M:>H4W8I:_%W)4[![RMZ_:PQ&=X.N+[J*^!D2E<FJ3L].KQ<U44[E#J&71G1>
M"7LFY_&=Y"B5L:/^@C^4?FSB=7H]CV^@W-E9V4ETP1QO785"@-??P(%...&*
MXX@)FSW6?;]N"X4 @XH7(#W5CXP@HJ>QO]I#HG@V@%76[82'F^)*,@!9?3,#
M("RM"0>T-E#_L1$\40U^8]JXM6LTG!GI;R_<X>+CV"K;K*L[RTL$6O_?J_7?
MAG&X33\TE:?ZN]%8SO>!P]RC[Y\'(AL_3K>3K*\.&US(!:!^&W#;N<$%E!L
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
M>P[3I[H#AW@I2E19@!&WB1UB6F:(,RZ&YX0QR*Z9/4/ ?=<^<[GP!J;Y\U2
M%,RJM&L!*\2Z2060 431P[<A-5E,H<]'-)S)D<[S^43^45[8%%B-,F,*FFVS
MJFWK%MFUD44YVE[XF"N ?U6D8?=0K+5^^GT>&*6FU',C?X;WX>.'N%PZB@HE
MG_'+#%%('%R+VKERZ\6G.0Y-@;9\LZ4.M.DGB& H_1UDL",_X\XZ!2GRI4?/
M^ V*5 IH4I7KD=R0\6\Z>*1-R!2NRK==ZLX8] $B/8OA)JW/J?J*3+U9UX>;
M5ER8 E7;ZU;5IG#"I]Q0J<?>KF.N<!AE_LL4F!J:-X42G3M<BT=@>O/77L!J
M?#;2)F0*$FUO?NUG(]T;6\UC0YN2*7"TOBNV1X?^T3;C\- G90H?'6Z7[1&B
M;[:JYZ9C\@98,(6HBAMN:Q%5\ZJ/M&M;F@@1SP*5D8-O&9?I8"./.#^$,X56
M84$C"\B$,7109KY+S>U?KI4Y0P!]7W$5;P- C^;\6_?XGG&9KW:,_-NWB0#6
ME2PA4]K0Z[I$ 7KH:@Y2J?F)$[$'DQ'+SH1-0:[B7F"=,3&%U)'BK4=3LU'S
MJ8=DY,=1P<PPS,01-,9='&-^ L:ZL&,*>17W&#<@+Y\9*3DN8!&&N3G'/1Z;
M 0"4(Y@1DL]DYRW_$\#72-L4TBHN9&E VDW&W@+$>E@UFC:@H>RFN.F6V/8G
MX*F:J"D@=;GAQ<9#3RE?"DD]@MH[Y9&?Y6U)[[R8'H-/J B"%UDOM&3-%!HK
M NYM5PN1GV65R65#,6T'GYS=7E_WF%VZ6<AXC*VR95.(J8C'YR\OZ@-H%39)
M<TC$E,K3N.:/,+6A90H1%4'X'"+FF2>WR$U_-*D6)?(_\S'4AO9-H:$BY%Y
M@_S1QSXK+:22LC"9#"9_S'L@\J*9Q'(>(R/FF<W*7(6V*>0T?CQ.9K:EW*%C
M<95RIQ!U,>>N1]6291\IFTSE,84'4-N$PN)Y1H!GE;DJU'410EX=9(-BUX*O
M5;@PA+0/%3'R M+^KOBTCA(^82VO^ 2_!OA4UU,D?%HWR&>/N987*5:^, 8[
M4XR80EY%J%S[KD>[YAK('GRE%S8:7V(UM&\**A6Q[>6;(?OE5JU]BNFNZI7L
MW",*RQ!::DWC*.G&A2DL542OE["TF'2K7OZ" \R?K&/):3GZ>M05+9B_*G(I
MX?J!"5R(XX4V/P5\*S%C"H,5@>\2#.9OLEQ* D_8E1?J]$#4 &)('9\[L"K*
MKE4:4Q<\6L_&BK%*Z$XK2(=;!J/'8XI[\KFGZT*G>0Y-0;8B.EX"V9N"#/*L
M:B*#=9O*D*LBEPLR:)[*,'_:X[CM& 82T!!/,2,.U,EF>89T'7&2M7!E"J\5
ML?E60^RIXELB4AVSEB=<^]A*A[%V1">,R^"&/%Z59,',[]N).58!4_Q; 46E
MS:\/L&M@T11Z=:_"+QMMCU,ADN-A2>[._'Z@^YP0$MCJ4$ /Y=K+[]/+BL>A
M/TM#P;AC/7I6A=0AZ8G1@XL&63$%S5;7]L^O7#X'9M,@->Z5CYY5,74T>](?
M86RRNQJ\%LV^5JPUT#0%JHK]CBI0J3%P$5,]>FHLB=>(>.!>NZD'!L/%A/J3
MD 13YD#!B='-]]59,(2MCQ4['%78DM>72"Y3EP^&JM\R+J'LI-^K;S"TW%!W
M603Z%C*:0ER7)2,'K%:78+!6T'7DQ13Z*G8YJM!WEN-6!G:.4FYQC;R,S1Z&
M-:9W*9!UE'N/'GWA4KJUHDZ/M"F05>R/5('L-,><7"04;KS;!4A]V7L2[F<2
M!)@,)I^I)QQ,2C)9O^ SZDEC2]0%H3?ZI^QZN=O+\6X@4"R4@5^"N<H?.0I#
MO*<5Z]X'6&H6>!1?7(TOF4=%Y',ZL#B9T:\#LTTRST.O^NL@"F/X6\0C$<&0
M@@5_"_TX^#I *+'/#& \L")02_ID!@U$)'S^!F]070,K>:XRZ+X.G)#">)0^
M!M>+^>Z=;(!Q/"@2#?9::$Y4R)D&6)ZK]*-3\?5H(;/MM:3462G+[737D1LG
MC2_J**^,M$RM-M)[W'."I)=WXF2(!T;NR-,I=6,GPLL[BSKH7'LS)8>%38A9
M-Z<T^?\;SX_5*DNP1G;=^FOL&RX=E7>-5CK)7>K_=S_\ :@^(0&+B'?D_BL6
M$59:5(->E1<9%>I$!Q]#WBR7<I2IXN3[R25QIC+/ZIR%(G+BZ)+.1C1,):\M
MT450[G,>SSZ[/J9WK8SO$_DE(QK^3D+WD83TB+NW_CC"G\"!$)D8S>5> J\U
M0WFUS?P0W"QP#^^Y^GX+=4&<OY" <.6)+9BP1867MVBZ(0)#:K+^N,'$P*OQ
MO:!)LF JED[!#;-I3LCYB FFR/O&Q\_S0$ 2!Y"?)<5LHV,PWH^Y^*LTL8*=
MH[29KJ:N1/:I[\18 L0Y R\C>LX=7,C$KB_3W>!X<I1/C,N$![&*W;'PY.7[
M6[8GG@0\H3?AOGCBYL6@D7GL<W'B/XU18W?3!7?)9(.=U .Z 1(.2+DFY13W
MP_XG)AX;,^K> G?,93!HG'E8:P[:U9O9!D7<4#Q 29*U8FYT7EIIF6IL&Y1R
M!ZOIQ&^&U]<)X39ZJ*C_XJ*KZ][DJ=7TXVMXY=L5R(2]>&%,T"Z^ 6NF2F;3
M,PKJB$+V"C\Y=S66'\D4Z<-FT=NVML+4)MLR/[4IR<3"_+;T^,4FN6K68[S>
MMM1;+G^U@2(\05=F"B\W&+([]^-P09;Z,ML@U!6G33+EBVR#2'?3D#8*52RT
M%6(]^HU"Y8IL@.>;VP<[]\-L%^S.OTAW[)*%I>Z2S&2#+[E RS24^"68 C%W
MVO.\'X';7JZ*3C4W<E'ZC?\K\<(O?0_3W*YQUVX&OXM@;RZV>7VX.F2TH;&A
M"PK=AV:?)9)AGFQ!\#U&/J_&Q2A1NRK=?:P .GV=?#I1H837[)1UPBO^\]V/
M_I=&)_X,RCO4K9.T0^V7%?J2<3:+9RE7J?>HPNN_@[\B;O [";C\\X_IF<?D
M]]7N_&L21LQA 2R9OG'T:_Z/AC[X G]%YSI5RMI:[ZXTQB,ZH>'*G4&)=DO#
M!YA?DP747$*8=(X>"/-4YNT]=VEXBKO@U)7?F6$CR:MZ7:(RD^V^W**N<NS#
M[(4[/QL7;M-\"Y68<)>>7DUTHEUZX^*/R+DH8UWD9:LLL47R'*DJS7+E2FZ<
M?%?C,?2Z\SCDTH_$,'?Z\97B%*U3</-<CH3KVX X])+P>(R?NT(]GA-'G78!
M04YH"-U*IIX0_OPW"OZB)U_4JL)<HR_OZ,QG<5\(^0'FL1\^DM 5L,9@20/%
M"%NK&AL09*OF5P4Y"2SLQW?D"1E-5A/-HM95?:&(:75/P(LE8)6 62,+$;3R
M5R^/RJ)ZPPF-$K_J!%8+P-G5^)B"5<Y(R.4&\]_PAD6TTB,-+]B,92.S@7;6
M:$T=I[6;!/=!8$03A79>1A.5L+XA 5M8&A<?O3R,;YTI=6/4KEP"J8RE\CB&
M9MF-B-8L\"JO30+0I)<FR3N3M*34J[EA,A<7ODF<#63(G:-MDKU#"YNA ]S>
MD1?'YN^-S>7Q'C_/BUR39YD^@?,E>CZ80 %=6>94"#GQW$T)5_=FYZY!/IEB
M:YG2?BK)E]KY>@D-+^P*_@8DHE/H?WC%K[SA]P5,H,/3"M.09-.X?R6O/KV$
M];E7G(U*GF_>,DEN%BMSS"^UET]A1)(&6Y"J187-$_=N2M_N#_]Z0R.6?(L>
MXT9% >N+;*)((:6GU[ ,C63F+*<>6]S*;"BS>4+=<R91A?Y Z;Y!78'-$V=^
MR*KEUUT38;M7W[BHDYXH\AQ]2_&S.ELD\UH_BM:DO/42?YU6:/NA"8,V:$WZ
M55B@TS>QNFN]&[E7H>F:S_)TUV==HZ]":\W?R.JN/(VV7X4.&[ZBV%V!30V_
M'NWI?*MW13UJD7@5&M7U/C5:V")]M/F839-F6K6UC3JJ^)2+MEZJZF^C+CI\
MU$1;3UW:WD8=Z@XYRQ6V4=J5/EBBK:+5J&R17HU]E*-)M>8(O3[MZO;@MLUM
MD:;,?)^A28&&J&RO7M=Q&7%+I:^%A==DD96OXE_9(*MSL+WV,'2E?$L;F*+Z
M&O6N\VT48^K6(K:]6M;U-*JJ;9'D*]R#V:2=59K><@UVO="VBTH[T]IR'3==
M;]Y%EXUM;KG.6E[JW46%;4ELN48[?N>ABV:[DMIR#>M.QK5UMT<'AYF=72;(
M9 (=)EMQ9&\T8=2NK6W4D28X2BILC[1O;2YW=N34%"3!K!GN&6*NK73,XV@>
M)2 "1MDD[NK%& !;J)S4TD70>FF_%AMHHE"SD>W1RCM[I"[315'2VW1AY9U<
M3:I@$:B+KV0B&Y4N*N92D?DUQ'(\PI-%VKA<)^7MU[\F'ANK;[\F8DYB%_.8
M,61AR[WQ3OOMJ[>_/;I\;T_4E>AR+$\V4!B/")?W::1^O2//DPC,7'7PX&XQ
M')TUH:OA=5%]=7I/4U1A@:4\.KH01FF;-+%&PJ].^\M/DI(1X')MH&]+]-5I
M77-":]O:]NCI0SX9?48)?K=G)J/QQ23U<7I#2BJK*@O*X#;!3:PX1,ZEKZX?
M+%L[^==@"4V0:C2P/=KX:,](^(.FH2<G325+LQ(!$U/JN9&OTLPP-W@4%4H^
M@T?%)=D8<),KIP?-G\'!]MM#3&&:QIRL9%?4YQ/Y1WGA557?D=CV:UES!&BL
MOCV:^(3K'F@>NHO,2DGO7UK>+RXKI LT4U1>@5XU(=9<?RMTD<] ((Y,(T7O
M(? ]YF"/27_4Z:-%&S]-)\G7 X4SI3,"?_X_4$L#!!0    ( $Q:6E ZU\4@
M1Q4  &M- 0 5    <')L8BTR,#$Y,3(S,5]C86PN>&UL[5UO<]NXT7__S/0[
MN.YKQG9R=[W<7-IQ[.3J&>?LQW9Z[:L.1$(2>A2A J1M]=,_"Y"298L@ 9 $
M5WXR<W.1)0#<WP)8[&+_\.>_/B[2@WLJ)./9A\.3-\>'!S2+><*RV8?#K[?1
MZ>W9Q<7A@<Q)EI"49_3#8<8/__J7/_S/SW^,HE]H1@7):7(P61W<S8LLH>*<
M+^C!/S[>7!Y$!\<G/YW\>/KEX.O=V<';X[?'T?';Z.T/4?27GU.6_?Z3^M^$
M2'H 1&12__GA<)[GRY^.CAX>'MX\3D3ZAHO9T=OCXW='Z]:'57/U:Y)O.FPW
M_OZH_''3=&?HAW>Z[<G[]^^/]*^;II+5-81!3X[^\>7R-I[3!8E8IC@2*UHD
M^TGJ+R]Y3'+-QE8(!\86ZJ]HW2Q27T4G;Z-W)V\>97((7#\X*%DG>$IOZ/1
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
M\0#L(GDQ63<.4)VT DS6BSM&%R4!4ZR6 ]*^A1:FFWZ/16VEN7N$:V' Z*-
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
M/*.KTC/WN<@2RTP?RUZ8HV>:9H%[(K606]4/ZG^PB"E\\W]02P,$%     @
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
M-)VF+J])H7Q8T!]?O?[W'<V8*":ULK[U*94&S5%#;PN#+VF:L5#[!9H;>BB
MP@5E\Z219FT[#P&44DF:)-&-RC6_Y?+#[^;S62G!+?(,NP[GG@%/5^_]BB<I
M%]>*@/IT5^-^P"#5)B5;]#PQ6/ZSK9\2J8I4&\^^X\80B+?X(,^;CQ: _VF$
MKBTP1BJZMB"XMLPRJ,VW<]YANX2/_-E6HH6KD]JC<US:[*G@'&&-WX3;&JN@
MW+3]3=(3R19O:7X G[?UHI.;6_O@<-80S/7^R!&LP?ZV2 @K<[@9V^#K,80)
MIQ@/AOFL$6&8SU727"_>1_=QP+=!FDDRID0R,RAJ>"5I(59L X&- SF,!!K2
M@FET&'I3]<[N;V]KKAUZ]K2SC\KHRIE/Y!M;YLM*PK3/'9$FEVLM:57/W9!V
M1Y)YE?.Z\IE#DK2\JG@*C"S_?N7)5R*BAJA$91N?(?";V?G!QE/4&J31N50+
MTOL%$?1,[4VW9*UVK;0Q%[>?43$CH"6,;47,>Z55W%1<=GL$HK&]CV"[F'&Q
M)$E(BYE2?Q-$0VL?,3(Y!U@H)WO!TUKB:]MZ"##M%N;ATIT(H41LL5#/UL\6
M;R'.]C(MB901WWA_S9"O0L99OLK_OHGQ6##>!(S'PH_'5ML(O$%/AX2@7AGF
M+C>*T89B:PP)<#[*03\C;W" @'*V>YWY$*)(/=UUH/&1@)GY.E',&SU/H*:K
MZ58#868!D$.6=C48_C3-5KT+UVUL%M G-C#>#7G3TST<@'ACY)7!J#Y&]>T0
M8U1??WBW3\>[^^#^CT%,)6'6AWJ/^SD,W5>_&B/U&*F7INC-;,;DWK<B(?U$
MDGPF5VTN6#*_)"&+Y32DJ=Q'SZG()&/4<B7)^E>Z8&%</-C5L=('^P=Y >8+
M8+X Y@NXS!<(B^1FN6ZE;I)$4L5.OZPBN<_(]N]>O:D-'EKU]0 M^B-/LT++
MN.3B,_VZI_=6\$3^&9861UVJ1)LQ,'>@)8QKI<X<V((->2Q-S6$ J VF-G<8
M-0C_\NV:IBFE-]+R)FK1%J0VYA"9=<(@M<\@]3#$JJE[,YM$O#EQJ:[IZ BW
M6:B^ WF8'H#I >[2 UHI@-Q&3$"$W:A:<7L=9KQI#NV- '!.W=KIR#O9=J!B
M#X.N7PBA9DQBP"0&L'%*.PL=S&2SV-'X\%YP4!.X7\4 @@#UF8O24[X%9A1@
M1L$)9Q38N.'<)PR\"U@B6]$@(]_LTP:J>SM,'J@C %,(7E8* 0:A#F!<%<OB
M@7PS+Z=LT@6C!7BD#7W68W<)HKJ,ZC)4==E\%W*I+*=LGK 9"XG\F^Q\K\&*
MQRQD--W]8:Y VX[H1*EN1Q0JVJAH=\G9N]W,J@8]N[F#C^R\1RHREDJBBJ,!
M!67K)DW;L)=[.&>YI(FFZ3E?3EE27D1;$J=!TMS!/8ASDBZ4NUK^1WFF'TFL
M(F-F7\:JKP=HFA,IAN#L>ON!)^A"*8./M%0$2MK,\=ET]P$P224M4?$)3$$U
M=W$/9%-H^#P7@B:2(D'DO J+Y2^73_'/^% :-*'L/)Y[%GSD//K*XEC2=Y5D
M))DSJ8M/TI1FZ?91K>BT[@\*XO&_VT*M'\>#WVRY(DPH9?A&2 MDQ5,2W\RN
M>3*_ED(E.B2RT9_682B/#D-#< W-?0!XE*SFPG"S:&KN*\F[C ^983#HX1[&
M)R+^I)ER3-S3,!=%]D"M=&CNX!Y$38J5C4;2=ACW@(\(:3#%&EI[(%_PE32I
MUJJD0G:8DF+VG6R[NP=X1U-*1*B,DPOZ2&->D/?AFU+H:>WRLNCI Y:4PCF]
MHR&?ETXLLP]FW \#5B=XO$60B&[O7=C(UU1.!2KM=4E8[6JPZNL>VI>4WLP^
MI!E;2E;K)DYUH]$'#HTV%0P:8M 0@X8G'S1LD@659SSJPP+@,!H0SMOX <$D
M(+<%VL:+Z_9P0>^@Z[9TM]G8_7]/^Y"*(>(?@2(V=6@8POP)*,P6JK0AXG=
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
M!4RMPG;5**$=8!F\&B6TDRN#966,]*A+=81F9,=9>DM=-\0-K8AN?PFHA@R
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
MKZ1Z*:@V(]7!&WVQ41*[F7=G<EKJOWQ#:_?DR]UO_UDT1%>V\1A>V?"N\63
M<3L )#?LBHWM/4)HG"8U+3V0K6I%56A[A?21,H;-D_+*N7#]($B2DJ)BK=Q,
MBG_%A3B:1'_D:::LF :M<MB7P6+>EKI)E@DVS3/E]W_@MT3=:]<TNWL:UA-#
MY,[#GT[Q>@7%K)./&R-22D2XD//O@C[2F*_4K*O'8M0'+[]P"[MI-]$U\Q"E
MIX6V)F?/)R+^I <[G"YBW]@!\R-.[VC;;U1ER]-H\B@EYIQ^SI5G^&:V,5 +
M8S6]R;,T(XE:BQHT+4<! _<9A76>B%9CP(6Z^4@7+%6AA5R4RZ=!SO4[.*8%
M85H0I@5A6M 1I'IERNT*,P"E)7>8VMI /J4):M/@";@,+A-P6L\R.#26H?UZ
MAQBXY==,-[<W=L M-RN4%BX$<)/5"JA58 I<SJ05U 97.[C4R';@=/YL<$F0
M=O LW)/@,A^MD#J+.X)+DVS!IH;8)+CD2"N(-9%,<(+83$$RRZ,!IQ\UDET#
ML<*5!4XSZH*O,A\'W%9J-CV'<,V!F\P]@VS!OC$L">=<,G/X@U/B# WC7F/I
MX)94;_ ,6=97E@:X53<$(XV3J*&<N2#I(IC%_*M%82JKX;R?K]!0A*<J\%2%
M?:QV$H:"%@)KR47&_MY<UGFQ.4"FO.:W@BY9ODRODD=:BD-=+D2WP3R WPGX
M]('?4;GH0A;3)W;C S^7Z^U6\$<FU];9^DNJZOGM[-")W#8>B[IO#6'K(5_E
M@7&JO.'5<D684)#.I=8UUZ;HUC?V< )'<EG.1/6?#W_E[)'$ZJM,LO/-=:*_
MDEA;4LVJ+Q1HY4T4<J()=63R@I;_M4)8/X1[H!=T1J7V%MDEY!OV\@%'ZE@A
M*^2E_#NF&V7T4(YJ,9EW]7!8:3:CH=06MP50[Z0F<Y-4SS$-P#9#>#@')/4,
M)<1ODGM)RLWL+$^E1:=-GV]J[O%H"TUO"=,=)].T\D+N$U%TE4CEHU R;LFZ
M)OO1N!\D2%)?H'**MT'UO"L08-($CI[,)NNO5C\"!)A*R4WDZYE6-S+J P'*
M3@T])RN6D;A!W;4?  1(Y3_9%YC8%W4V1]DT @28T@:3RGBTU88V2I#<30OJ
M"W7='+'-8#[ EZ%;M5E)8TN+JK*5EP.:53;@)4N(M!</;4 -$OL!((-L$#+M
M!P(#NG2#=/BR-0- !MGNRQH,! 9TA=_&#FS- )!!MONR(+U<8SHNO\GO4L$!
MF^.JVO;N(6Q+M%UR<4=7N9#6?BHMXW.^7/+D/N/AGQHLYAW]@;JCL0KE/'!I
MJJBT^P6/571:DKS-<J&1BK3)3U#G[.DZG#\&//#-[;A;3P<M(Y*%'V=S;VX#
M:)LA  #]%XWE!_I4WANSOJ?AYOX84Y1-_0% +*1(<UC(N!\ 2+?J_GJ1K6]C
MDF32BE'.Q=7AJ:HF;(T#>  I>$AI5"3$7K!"A9*3ZL#KJ)^4YCW]PKI*TUPJ
M_9*R"SK5?JO&#E! E&E,7Y*H.)@E)X_DO3J_5"G<U4Q+=^>WB@WO9E5D.EOQ
MH>=W^F6E\JH71VQ*Z7DS*P_;* =ALR1N.XZ/VA"KC?RYF5WS9/Y Q;)F 30U
M]U"QP$;[@:;;8(V(P8G-5ZOR=#.)E9IW&?.O5\F,BV69H%=O:UKVQEH 6 L
M:P%@+8 C2%T]5N#2K3L ZO5T%;3CY\.GZ(&;"H-"/F"M?9(2.&'ABE4F2BZX
M!>9N'EDD\($[Y.F*2R8)M^".&+IBCEGF';B#8L[F3@\I_. *"+ABGF%4#9Q@
M,M./VN9T@=-Z6@"I94-3KB4X7:9O!FAS%L$I*GTCM\]^ [?X!U@-)IFYX!20
MH:1"%_3N](N^T1LFPH)3%;KQH6TJ%[C%T,DU9IRF!TXSZ #H@"UM<P+ Z0D#
ML<,X?P><^M 30VRS*L#I# --C/J\('!"<B NF"5^@=,@^E\;+9(OP.D3_7"E
M;?(_N$G22:\P/M@Q%KW"!-"3HKHFZ3MCT2(LP9LF[XU%9^@%_B Y>V/1-FPY
MV$ON_%B4D);,,3U# 6YCZ8<-;8]/CD7ML&1'^](;A@QQ5QRY'X:T+XYCR!!W
MI92'9$AM/21P:\4PLZU-,BDX1=06Q1,?;\TA>7!*9R>@-35N]D"'KW*9\(P&
MK]\%K" HR!1%0<KF"9NQD!15(I<KGFP+0Z[44BZ2527,IYTB:36SV*(BYF"O
M=E(]<V#JL=(F5MIL49NO*#><7=)(71AC6K+.L)<_.&4M95LX#;V\P=$D%E9=
M(])P^*3[@-Z84"A$4JN[EJ^VG:AF??T5C-PLI'9U(\TZ>P17+JN6X(PZ@ROU
MV6)I]C"B/S8\66#MOK3-$!X+41IA@DO^-L^T//5P7CA0KI+M-U"5^(OL,&4A
MER9)+$T4Y=9M0MIY8#PIZ_.D+!XEQ:.D>)3T11XE[<LF .=6[ '8<S:9V;S@
MIL(@O+ QJ\!%P(>9'48N!'"\,!,4O5DHX"1%'\@J&&5CF8.3& /QQ-[, [=:
MAIHM%JX.<-DP/?.D;[,27(+,4/PRFS3@HH31AAVJ84"*3QJ0) KB_1&=P<.%
M+6B &#=L#0,#B"\K@/A\Z:A??G\F6^_4U;8WLR\IO5891,?4V'4"X*EOOD'#
MI(L_(#L>?^0\^LKB6&I35TDF=T8VC6GM11EMA@  ='N2>VT*ZUD' "#T%WW4
M-85!N&'HJJX+ "#[@[\\38M<P!D77XF(C)=+\P@08*KS:L:(#AL#(%[^<52V
MX##K78JIC6:;5J?%G_/4>)+V^"J0C+NC*16/5!7'*:H?D#C=5$$PWP'[&AX
M@XQ#FJ!CE@?$67U%:-_D@)X:'63[R J?Q7A06*!T9)7=+H3R;]3=6F#='PI$
M*RVBOA\42+:W,K0<!1,C,#$"$R,P,0(3(SS%.YO-6K !S5K2ZZ#VHN^#^^ZF
M;&GCTP0;INQQ#G0TD,%&+5NSR-A_"C8 V1JZQL<*[@Q^9Z 5+C)PIX6[@S3T
M;(([0M\9>4^I ^[.R'=&W/:<--1\-$.' 60EK8'^1M!CK>78(PNLW7[@9GV/
MS&AT"$)6Q>S!-P?J(>M?73^V#JFK+*^W0:IJ,4V5 5 D(VTM@(#M:UL$9,KS
MK&P9\++"5R!_D8,EJM)5V_2N05[N,*]K0/HQH0L3NN+I[Q^^41&RE-X*%M([
MM1]<\EQ\>B*;#G.Y3-H/0M9-0FVH>M9\$*(>9'LKLBHZ#$/85VY%UG%S#Q&:
M2C?1@8YRMMXWV=3^FR@;=%,0\F8O\#[G%<@'?\^H6?8;5>Y+&DT>I:4_IT]F
MR/",-'D[%/:6]4LG>;;@@OU-HZ*2Z4%ETJ)DZ=GZ^1JK$.T.WC0JMCV'4KEA
M.W@3LLWJ35U5)F#LN^9?J2C_8DMM'0\7KQPY(\L=4E5C+9ZHX.]1_>8A>=K\
M]I&S]\MJY7J>:E[IB9'39O5CJE$_?J6ITCB2(GH9%M6UU4]ZK>2.*DFG+E7B
M2>&#R4FLRMF_KF,[* *A?*264^_Y,J[3&^T^BUN2,&D/D_: )^W5 W%AN#1>
M,-ZCHC^ZA$AGEB.XN.B0<X';NA-!I9V.?U%VRH1UF"#J90IJ?+3@ M6>N*-S
MK(.+9?OACRY*XW9QX5$ / IP>D<!W#D"X0E[]PRJ]4#!D_8=&-1;4!)<?I,%
M5P!ZT,!EL3N?9.8!6W#)\!XDEFD< ESZ?)=EZL.CZCR[\<<@H=FV]IK<EE2.
MWE+J@JD"7R3LY5F9H\=G@601"XMJ:Q&+<XGHN'/9JUVJHP-*W.4].@.#29 O
M*PFRG[C$!R*4DJ NT=SN$RS4A"=JV_HG_:)<,H;$'[7V<E.)V-Z06-[S6^XR
M62;85,H$N6L\\.=*3'/EE/X&=L^4SW13IUR=SM/@JVR#84B?8<AAB#W2EK:J
MYV;EEK/Z0)'7H&DY"ABXSRBL$]&MQL  ,[J"T16,KN C2#7[[$A]MQVDXTB=
ML7WK@B/UOG;2 4;J(C6PUD;JT#0RY9S[SWX*IGDJR4Y3Y=69LJ2\S"+($Y)'
M3/ERY&!!<=+UR8G7=CZRGM[FS@_6*\'HZWI9OB[-6=$[LF*1_FQHQ6/W5MW9
M9M9/PK]REI:B5?TI:/W))N-^)P3)_]&K*A+U9QT;6H,@7U7,N532U,2U9MT?
M%L0[^DB37.?6LNB)WD0\U #<YV1VJ*%)0O'6&\[H/&Q60AO<40'SK\.;M!]0
MGL0A)BJ$U'MT":-+^/1<PM8JU$@=Q2WU8.<^IW?!?%/QL4@:XJJ ;\!V12&W
MMV(^_Z5LF2U(LA^AG2-J2!+<>:>&1X$NJY?ELJJTL%*1'5A7\E_'Y,F??O]$
MOK%EOJST:VF?.R)-KKI:TJJ>NR%-5Y>J\IE#DK2\JG@*C"S_[KCS(CV6BGL^
MR[X208_J'5>":-77 [0\S:02(>YH7$9"%FR5U@-J[N$>QJ7:A^DU>Z3'Q:B_
MI'26Q]=LIG,,V72%!$S=!I,O<_D1:#19<I&QOXOO80VS:2!0H,_6G\@?7)S'
M4O&I<8FW& $4S(]"[QTW[08*T)[GG\FR/C[3<I07 M?_;EA#L/[.;;-.H,#L
MCBX>"L5;*AB/=)6P.H[F'OXG(OZDZAJ:8C>OF(%UFH!=9P]9_#PI"KQG=#(7
MM,PCJP74W $C<J>7W_\@2$25@*V?'+IFG@B^IZ%H6J#ZAACW'!1(M;7/&RQN
M2 BZ*-*\)UUNM+'=UM8'N'AOV^_'NVD)H$**?I8"A.BQFPEBJG6-+G)>X_,%
ML]!U&Q)O]*2#6J.F&R[P5=7T-?0A%W 1[AX$0Y/Z"NXP5%^8M58&N'-//2!N
M$2 !=Q2J#S:8AE7<KG1,(,,$LM-+(+,+H8#;6SN#-(KX@=M>.\-N>Q$WM'/$
M]B%K<#MFYV]I'D]QG@[Y2[ L?!Y*7 8I#7-17!L<I M)J=1TED5R7\R3>?&/
MZL;MTB"'>+6[],?AJ,>T1TQ[;''(CR1_/DAU\8*N>,H:@BWUC3UD=I%T,4DB
M]9\/?^7LD<3*L5:3,]/<P4OFW5(5)R7Q+9&&R&>NDM[C7*[DWUBVJ*:X*1VO
MXX ^F"!67$A)>4&GV?U.TC7@-.CC)=V")(K[5TDJ58NBRDMM%E==:_?D_XO&
MT0/_1#+%SO6>K1KZFYK# 7!@$'Q)! WY/%$5AO_%8U6(YJ,^>ZG[@&-A0LUY
M]>X#PF'")6'B5Q)KCZ\;]W,/Z8Y**<%45?IJ.=YBN^ACR!?/"/\IBYA$Y2 G
M*4EG5*1R$MQ3\<A"*>%N9A4[>/H@B4NK']4FR@[Q"F14PRO\K]TO]Q_Y(Q5)
MH?W-J223IA:*L&UW'P"+1:R^UBV/)4DAB>_S:<0>F0I3-,&SZ8QI?ZZ2YFKM
M%NY"J$%DC(&+@0^A?(TYD[#9 @:33#3HI.9=93JH,+-G40$\#\K51++PDH$+
M @^_R.PU"W AX^$G4#_NY-'EMMH&#<#M4;TH%X>U>@S"/R!W('<Z6:=-!_/9
M,)\-\]DTD,P"3>!4F&[@;$-,X)23(>&WOBP%6JZ;9;P)3++7E,12CZ3J.LV%
MA)!)?I00I(2=9D]:KH-P?SER<-"NSPRPWNGQGQ8V$"3,%<-<,4P-V5&D7".;
M7]6N,\NHN$GHPT+P?+ZX9(_TORD1*K7ZG BQ+A-R\T17!V:@MT!EE_("L$0B
M4>3WRR.SH3'6CE<( (^IH4F.)OG+,<G;"_$3,]][V?%/S*;W;,N^5Y??26$L
M+2-UT(;^E;-5\535Y^")\N0J8TO3J)V]VNL[W=FD Y"-=N?+LCLUMPENZR'\
MBXA(U4-0D<M-:82JJK!6?=PKU@=>R@NZ$C1DQ4%-^7=,"R&=/#F!?+M9+[<Q
M23+Y[,-VR6A4\KZ']W#&+&>%PU9%J*^64EX\EA60ZBH &_7Q<4ZI")F'BM-7
MBM=S0=-:( 8]W,.XEK):0^_A(P^$49+2!8^-YTES!Q\59T.I\5*Q/EQ^=2":
M.[@'H94C=4#,.@$"HZ_F;-(%/4_H>4+/$WJ>T//DV+GP7$D9J>?(0LT=J1_(
M5+<96>Y&"YO4$"&T D6F&K8AO'? X!G;9X;X?@:&ST8E-X3X"S"(PWA(#)GQ
M'A@SS.T6Y[[WUZ\"ECS*?W*Q/OBKG5/=;#!WWG(;>M -_K+<X/V8T5?;257G
M@:ENY)%8O8>EJHE'0N_(UT]R10M&XD;F5K7U2+I*$BZVMCN:4O&HS<AK[N 1
MQ&]<_%DH8"%MGMV5C=$=A^XX=,>A.P[=<8YM#H-]<:3^.9,-9Z2.N3I-<63.
M.%O]9J2>.+W"[-Z4?QND&0__G!+)ER(A3&X"!<>UO]-OZF_:UMSO[84.70(]
MTXQN@Y?E-M!DSWVXO[VM+)BF>=K#*^_5=+U9%9?V[,LC%+].DN@F6U"AI\BZ
MLX<4OKAXFZ1J000]4^OR_&!9?BA7I<94LNOL =Q7(B)5^J6F#'5E&Q_I=6EV
M,[LG<6/I;TT[]R1_I D5)%8QAF@I]P\YO^5G?Z2;SUX+PZJO#]>,W)OH7C=1
MKU8:DGX:&?0  Z.VOJA1GQ. XK_VJ=+0I?JJ*NI<T$<:\R)89;)Z+'IZ<++1
M.%8'>I)H=SFP"2;3;AX 56YN$R'479Y%3L#9>M_FEJS5;\6VLM];DDA%)9]?
M$GC,A %?A8RS?)5_"8%.=G2R]PC$1E?AK30"B&BK%7SN4NB.+M)B8!PY_M0&
MGL0A/R/O9M&#"DQY71@CJ4WL9#+I'%9NN=&CN# V@L$)#[,]CAO[84 N^#[W
M_9&L8^OO:F>&@HOM6N.U=B6 B_E:0V[A>W3[G3%5!E-E3B]5IDVPR'UT_UW
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
MT@)I[3B>(-_152["A9II4J60NP\35?.Q#JWE$%"!UOD66HP X61<'1KKXWS
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
M@?;2FX"[\P#7:W1M'G0@M!O3D)L:+LN:XM?BJ>R?)HZ\D@.CY<K(_L-L47<
M;**F!Z6.>2W7E%7#>IBD%Y/Z#]2D[HMEFHC'465D1LUH%7:[$M@?9JO&11_E
MR8R XWZV/R&9<;VC([]:+5L59R4$7J3[!RK=S9$("[KC)U+[XQ,DL\YY%7:]
M81R5?8.Q<345_CA;4B-Y]@16\FR#HW)7L%^UI%^V,:L"/T;4BXS_D<IX)WSJ
M8P?&A,1:>GQ&)5F-Z:Z$]T^S353\AAG)68GC7<$L(1W1E6O*JN .D_0BMG^B
M8ONQ!8$>6A 3$EK)D1D5615VNQ+8'V?;@FQQ4;VP!0!3.W[+?M606,FVK(KL
M"$TO,OLCE=F[&@4S)RX;%!,26MG!&95:)8X;BNWE9IN1%XS9(>$='8-U5&(X
M)OP%IZMU13><3[B(5KC]"8X,Z^/'LODRZ1-BNRWKB+0=!*X%W")4%:]14 YI
M^(<:J(AA10UQ!&C/4(,7U8 [O[/8 ;+D)U4E>GW,2NH[B3W70@?X];C&Z+GA
M2E1S9=MP9=MPI>1<:7Y(4+4NR&ZUIO]B-,3S;_UK7LL:A3@<5U?&Q+NW=._X
M1/\DQ8N. 3'POE6CH8>.%T/AW5MJ*5PWE"=D' PQ?M0@&.6F*R/@=KG$19JO
M> H)I56^_U6KR_@AB;#K]"$6>VN+:1^MK[0-(#2UGNHODZ3ITI:11LF._?6\
M3N,UPC7>$FVBE_T"6C+>O,;%4C Q1U?#H?'Q>WS.HY >HR\7:1EG!/Q08V&]
M,J]H'F(/->U:)]7Q6)0XVE-'OX8.CI7B-M%AH3.[ZO<S-J-95#(<4K4A)UI6
MEFQK=FVN,:I^+# (8F7*H^=B\I0,,NDQ&C?/U!CO3(:_GV680M#RA8M>MBNA
M1T3\""0$K]XPLE,2/Q&_QZ5MD(G.A.L/<%=HM]EE$602X\>8(.H%7E-I3Y_P
MC"IN/='3:MJN8"I!\".V$" RWX.J3]#/NZ#0#04U):'6&\EQD3<8'F<3XH<F
M+KR*OFCJW,$F[ IX+RD_@OP#<\DTANJTM/#P"(P+I@1;7_&-@"9OR<^$3CP(
M.7SQG?ZHG_(4;@7T(_26 NFI)?OZ[P2,#+;KK#Q#(^AL]?C3K,0K]G>!MZ1@
M-[!UEI#Q=NRN(V)Z?A83B%YYX C0?8-@2BN*Q(",+RNR7/:[MG0"S^N(<\%2
M('Y04W.?-NCKAL<I99VK&3;P5X)DV$/.;7@%Q?7-BFP/(LB:,2 51)Y5[J^D
M)VD9K58%),<&%PY9[G_AB;64-+1&NXXNLH_2]WW'G7ZZ., $ 0G-;V_J+&;?
M3$BYZXREPB5YQ0$*<W\>MMV[JD6XB,HT9F%J29KM8'=^]#)_2V?F>,#A\;:^
M$=XI7/*GOY[O^P!3]0/T@85C7O ^'+_.WYOB3/8A6X;9!2P*C.]+@%&6U55M
M 'ES9CYC06>S)2EFU1K/(KC16*:MJHNV::*E)YRC\'+UT!AMV%N+X*QN>P#*
MX2@ D_: 14G,]SU@JSWT8)(:PKU4:5^;M"PJ 1R4BW$7SD+%A?.(B\V[(;^D
M4X(F[D@GP-15P1,N%D0Y4*QQ1F;IDB[S=.FJUN4WZ,U_X:@8F<K3YXBF7Y:S
M0H(#+AVS;J7]V!_K8<!>;WJ6^I%%6151+/*7N2<X@00MA\!<3\BZ\$M4(_KS
MJT\H(AA71QE%A@;+]VYBET>[)(4=S[8@,U:.B^Y[]F6Y;.X9%&EYV1E(8@IN
M_W]N<,)5370%^+J5WUZ5E:\J!]JVO-;@!E\.SRGT-($BOO2/1[K:ETM<4%T"
MUW*A9AY/LU9>4V7"% Q\ ,TCO_Z94K"WX.DB"9B#3!>RI:QC_CAFK7[< 634
MP7R&.&K4PD8<-_-[RC'.GW5A/&N&S0D[ QLXPU.\ALU)27^9Q5%1O,#9>K2!
M+/C@)VF;T+$JG"((D3%*#>FD,DO!<05'C](<G=?HT9RA!]=CV\@4[1*WDF0K
M:96)> 36 J??\"<KVB4O2D +0 @=H 1T:BK@]#O^+)3L^2HT@)X8V5( !K(Q
MV3V,Z!Q!IPGWNQ#GGFT=3([W$1I]]K%18-%V$^RZ;MQ@>]<][H*9^E:G]YQ"
MG\.!S12ZG4HW[-)3$QD&'S<0$OP/[B#"7^#<12_"RC6($.:*,MBIF2R730?0
MO.T ;%O:#K#:S+0#K]ELT1<I6Z:+H9SXS\W;^9YNKI9-U=^F/_6SM,/Y+)H5
MD.L2LG6PN+%22SOX@>(I+[ -R*&S"A_^0I:=8M:U]JB?3A#5$A&Z;[K!(C7+
M2>H+3T)FD-S8ON3XW?I0(4DKG*5/I]5KFR-@T99'Y57-K8X,"5];'!DL.O:]
MFSYJ;&DXD!E#TF-[-&""F/A*LD9,F!N^DFTW$DJ8;PNT/ ^GVH=(L=JG.B5L
M+5.T6+O6$C+G16MKZ&TFV>,"MH#_;# )W!EJNX$Z_9AR15O;8C-2RM:)+/@N
M1%"NZ1Z"*N<-VWYD)%^Q/_H?UK'+71#V4N1 !V#8D@APV1Q SP HV[??$+B*
M#7_UOS!%&]N)P&C77C"7 K\+^.>'!^A8.<^3.P)!DG&4/>P62?J4EJ![/N+-
M A>"M5CM9<UE58Z(ZYGT^0%Q&&R>M$!0%PFZP(NJ.UU^Y=C"K'B*@T/,..Y7
M:AO;EYO'-WWF\5%Z\\\E7NZRFW0IBM*ST:2FA)N0]K5[-,&HLZOTRQ.-W68#
M$ UO.WN*-W"@:)PSCA2#%4DG+H9J6GM79IO?<A/<V795CXBC':H:F(EL2OE>
MM$;]RG>AFM*@L/$T&6+?>\U%1.4A9H[I-<Z2BFRB"GY[H8;SHCIX\F5&N<]N
M\^RB;-9YSMX&U#H:+[M2:ZB#;U4_\)Z -O@+[<FL(BW&$\-[\0*A+$U?:)/U
M<Z]I_VI?WK0WM8Z$R'M-0D@Z0G)V[@6I!?H?TM$95BGZJ6^H@BQP%<0Z-P]'
MR[)O]#\VQ=EM5S+TBROJ#[>78E_[3SK33ZXI=R7 3D@&J 9V\'F*,T%RD-3*
MA8UP/D!!%='W)I&,]LCY*LDB"2M\S9:AGZ8<B6A1)$PJP&B-<X!9&>UWN+,=
M_)KF+(_4(HOBW\IX32#Y,&$/L$Q3$..T(0G6NR3E XBOF6P,>!)SO.L+^@R_
MISE+V/8!>C%[X-VHG4@LIQO$%7Z$;KRVV6]/P$ST@F6I">\8[LI3UX<VCZOT
MB>YPM9W!>@U;= "K 7#N].US].XS;IW5<_0,-?"F[-K5'-L1=Z[)@(4RB)NY
M'M48G9C!8T2\&K\B,)-8#KMG)ON9],I6.KDQ-[9NY08RP,3J)E**%F17'>"E
MR^NNHHWE":RMEJ>; 6E?DU #XB2F9C>G&,-]>,");O>X7]N$-9$:DVEL+ H!
M)C>D&J)V,5S;.P1K>2;+TO$U;<?P3&*.WK<@CR;G*YN0TH-O,OO41O25U!-L
M<H+1KNW813IVXQGRKM2B\!-MHBJO<UY/_BC^B?UX01G8)@H6;1BGAL]W;4+;
M_?"4.YP1AJP9SS6@650'_ZW@%Y103 BN7B)V]1*]27.4D"R+BA)M<8%8M0O]
M)..OD]-Z@:F3Z?!_L]'2")GU,2NF5A'4F2*V43?4K13Y7<KO"A)CG)17=-P>
MH@S/\Z0)^[I=[F/*]D%B@B57NQW-I5&9GFO%V@!", -0'<$%075DB?;A86@?
M]!5D0NH/$['&^Z_%5OV96N@0LS]56U43W^1L5<5^>+)5F\TLV\!FT;;\RNQ6
MYUR?FMVJV.'_9J.E8;?ZGB&OSH;55=!>;%@CB0K@^:52PMS5$'#/'6:67;ZC
M!'SY>H5 )N'DO=NCJ[V\K\R[.S[.)FY=R<&;0JQ?1=I\B"P(Z3#G&7R#R^W6
M>:2?'HQ@<7YJ<"<Q94^B_"K2)AQEX7Z'"0;AF\N'N[O7-K%M29;5 #\3<?E:
M-M)7I%CBM-I1.9[>+EH'W.2VT"J=\+1_KB%]9;MFMXR>VI99I;?_G<9))PNG
ME^GPZK;(6MK7R_Y87X*"1N6?U&7>!^4P"W&>)T???,[3RBA>WPE).Y'\5J$%
MC_$_B:^">]XG7T(/)G\/P(W,B&\(.!0$9UOY[V<9IK#W>2;*-<:5<15DC7;M
M;K;EZ?O9/7]/M\@W#%$GG<H#8)I\)6.=L1S?WNH.T->R7_U$\B?F'9_>;E4=
MVN3VJO)=>/T;*/F^3FO[Y'*,MNS Z:&*BDKOO)%:.LS]]E4Y%MQS_#)/)LSO
M5[=SU=#$7O:MNH+DWHQE_Y@E?)%KRY&YVDLS@(G*/DP["XOD."F8HA+,_UK,
MS]95V 1GA#H3.44P.6/R!.GKMQE/NC0M0\6$XS]RCN>\\.*C@1>=V1C,KO"L
M^$)./I]^;]'XNC<3]J'U<$(."1EIW_)5O0)D:;1(,_TZ.A;H.#(OE/$$,#T^
M'EQ[N&TPUB;)S1[CQ,T2_;%7,%D,!]3]3#O>SLT*O(G2/*V+'94L#6J2EC'9
MT9<I>N,Y9X&BH]EG@"S /#PIGG'?H$6/@):=#%W4:-$]H)WXC+0A&0IST]IP
M^]UTL,4:5OP"K^FBGS[AZSPF&WQ#2EBX::?R\UU1X#Q^8=7M(Q:=/\\3]E?&
MC83D;[NR J9\PM7M\C'Z(MA?N"6FN95P \K7KL$->IT-PE3XJ!=* _!07.-#
MU1X2BEI,82Y@.IXTQ.\(^M5NM#,;7$"=[;N(6DMTW:,]RG8)3GY)J_5Y5*XI
M>O@'-C%/40:#/%B(S[Q!32VE3]BU)MHC0PS:&:+@4(,./5-X"( Q"X)]Z$ ,
M6[G/PF@2^T/TM7@=VW.#3[N!&>6=_N0\CD<X7[^_\:A#T_(V&G/;VFFSO,?Q
ME?+(^'SX*_;)BI23WQ/=OO%UYB7ZPRR*X]UFEX&K?D8 $[OJU%J;LXP:FN(?
MM!Q%EHG:]159 N?'7?0'N/>WAXN84*&#[0*"G0)]3/C3)#U&MD5DW&GD9-R=
MS=L?9BG;!LZJZ LNCPI<U3\Q6 N\I+O$PZ>U)JU-BG9GK UD?J;K#RS%,5!'
MCT#]I+9;_>,;F)C?H \,[^$;DYRM5F5C?*K:'W!?\[1,5WFZ3.,H[RE*QPO,
MSRAD^]/5!F&GL]8$8+#)^[ '?5JDD8-&%/3KF\%6Q$5Y(MN3 ;_NFL\//Y$G
M7.3,V%_A/$YQ"45Y]ZGS!OV7JJ]K.DMDR;B>39\?T!X(:I"<5#$.ZH14'A)B
MRF=?*U"!H?MIEO(;/G1N+7&"BRAC+^[JNI+-"^Q,E&6W6"XQW)+K?&MC67*&
MQNE:91UUL 7L_J GL'!=\9Z@AZ8GG5=8B %+*]/T9/_M:UC5W$F;\E+G6(2^
MEN.*PQ3,WD\K^LE/[K#B$.;K/ZLX[,^TW/"FO-;/'/\5.]X%\RQ EO>IN042
MO,1% 1G&J+Z/RA)7/&C-.$#:)8) C@(%I!/T&%S4Z)E)-6?H673&Y,.MG4J2
M11^"MGCX#H\JM@0L.P4/@M0[VD%. VV[CV.JB4_+/2#';Z+%Q*_%=#_,/.W=
M=.\G/SG3_1#FZS?=#_LS+=-=F]?&%QI[<NA_Q=:\8.H%R'<_C8Q]W3Z>D[*Z
M(L5I[_9]+^<94U#T:5'A<VBE_/!R1X5,,95? "S&.?X\8@Z>_ ^0H<4+ FC3
M2^H70GIZL_T%$XD UME)4L-3/;DXUI,'VG">)Y!&!$(X'PE\U:FB?90^IKU@
M>$[RJHCB:A=E<-7PW9#]-BF )A;>)#KB6@4UU9H[=;_/$(\\9?X&7'< SGG@
MZWT^*-3D@VIO4:)X#QYEZ1*C-_^%HR*@03.)(12:/)- -Y5SYP5>I3F[BPM>
M&,PKT$<;=A67_KS+X955GOZC=MDL<(Z7:67'W^D.CN>39U/8$SIZ_M!TA>FA
M2]85-&==@9\_=[K"G*0?ZJZ\"K>H0X&S</AL5XI";;3:*Q2=ZE7,T#-)?F[2
MJ/'61X>X\SU,C0[F9(NO6S"LWM\PB!/.4&XTL+V[$O/1<K8:_VE6XA7[N\!;
M4K ,-05^POD.SX!!3>(:J&BT>*D? J#M>UJKKG6R=E=7:_#\K*)_@@-$3I@N
MGS5@MI0RR @J.3?IFL#$7[S4C[&9U[PYR=72OJ",KXJ.1M_K'*[7]6.XUB:K
M7/ON9^4PCK#3KS9LCV??JYEGDF.L-Z%4!L[KS,E(OLK2)T@.Q6,!Z!1?8;(J
MHNTZC>F#JU2W](8U<N[GE1*LL-/LA@!>P-J$Q]#U[:<6*WT6L+Z>::<G$7JS
MT&"8O4Y*EODYX?6XV%6?**%_,8U1D=->6)N=9G3=3U,]?&'GZV4',[L%-V\P
M@VOY=#:_FHEK*"QZ,]B&!'B=R@G>%CBN74S@58HV\,L_#$I:&9-Q/U&EX(2=
MEQ<=B,S3.N] ?#VS4&W@]2:=QFA.)U.H0=Y/#UD\IY23TU6&38-\F:2*,K48
M,TJLSI59S7BJ)\1RE:"#7"7H3<922_!MV>1R9^IFPC3+:RE8[T"-EH_D*LVC
M'#((/C0:HW?9&G]:9_41M^IC$2G1(T$M;;0G[G]QD& O4>29,_&8+TIVXJXF
M)L=OV167IO6@8H-^;6#X/?Q1Y?RX)/6ST^_B7T>)4(#S^.^[M,!,0UZS,Z@^
M-:7\GN:R/]J^KS5_%(C.@F^S=X>!Y6KK_1W]?LT*!9!EO=)'^UMCJ6PG'2WR
M\C)&M%G[2F[*U %<EU\@#W$)YT='D5KU+_BN2&/KM6;UJ/N^)Z.&TE>()-[#
MZ:F*6?^*T18P?17E,#6%Q<;-#A,)>%U!V>(N^HZ^-D 2*,Q: ['7.W5^NZ9]
MO6[J(Z"1)*-[LZ;;L^[U&C@P[+V! _T[0W4/S]!E5^\/%&'J=!1!3U]EV+N)
M$K 8WVXL5WX7@0^[,LUQ63)#M>0',7<%N8*HOT^XVGNF!*I;^7U-A2M-QY>:
ME :DH]P<]E9#)8%'-J"?55W$B#$GPTQ"JG$6:<X43H/Q.F<!N/!5'1UYNZPW
ME?B!#@KN= S*I<^96AF9K-;I&$YJ:WA\3WYKP$V41$#N:2B3!C7JP#Z#-,.(
M(4<=Z&=M0#!9H@8^*@$_ZG0 00_.D PC'6LH^_.J1Y,Y&NY7N_>\IL94FI=I
M_'.4[;"'+:: 8/B=Y!&P5[AA/.I!X'VA,3^GM/UK.X-8;U[[%D\T"=WLY 8E
M88JVXF54P$ZSO"W MG5N,NJ3<VHYJL.:E@&ICM^='>F#EZ[-R:8/B!2\9-17
M85<:3#YE\])4"EZ7E7F8A.LJ2@NG-N88N: I84YAO1;[4H0_A'5ICY>!;4O>
M$93FB'?E#$%G7K%M.3KYK.? &9."5QD6@ML,Y(\0^GMH.+N-"9$B'38@9!#B
MY).F*O3%:\)4ISR>QAX>EUU5.YF]O*]):S\P1T%*IG,3AM?1O,=Q%I4E2P[/
MNF1P04:R10?W9D8H.P^-&[M2@GC-350<(YS<71/9,92\@J(T,,&#%7KVJ&,I
ML31;L1>X,$3-M=RW_I(.'H&_9"J9KG3':S@*0'X0_,KX\<2#;"R=RNBBF7O.
M;\SQ)6UD07!!0G-VV(3B>NKP#(YE9T6@=AN(*NH47.^]JUBO*'Q]"3*'G PY
M\3&.P5>8-ERH/EK7"(0[>M-!"%Q-80K!;S44VV%OVCW4V,!)=2% M-NQ'$G&
MN?6R[E5ZE\ >^;0;*"#EC$[XBT0<3X K0Z^WPLOHH+JY\-,W4J_KX$L]&_M[
M1V=B!D@"'9=I('XM)VD:70MQR.9E! +[A6^[52^^]JL])DK XK&=L5R]+INK
MTUTOQWBC] +98$)<K^7 3MB!$*=T%KDY)17\-1S)C4] B_:RI!R\+I5Y6(/]
M:)%@/T)@7!OPX4B1:J((I%X5T;I6NK\<%PE; 0240.WF)80X/0&*KRE+AJZX
M6%0&1C(0.%G57W"6/)*/406UL%_V-;$%DUOY?5O)JT1T@B6Q$@&RDLS*0F^M
M);7:1,5OF-<N*25[Z2N;U:CP#66UDN.QW^GY2)5%N:2&X3Q/'G#QE,;4P+A=
MMIGO.B67'RFPLO^G"P+[.<$,=D%"<Y+;A.):#^SS*'9(HU\Y\3"1!4Y&DO@8
MGM=E%HL=)SY2QBE2#^]EF$+*.(.JNA;RR;TR%O,TU0]55%1J9D(OMUTDZ'N5
M#+W,%:TN;^R<Z$Y.5=.Y<>=,.M_A4!?+D3Y>D6*)>>42P5;5RG+F"(:K=<TR
M7-<+W#D4,\TRG'Q=FL&5T*BH"*>2X%=7]-CA\R^IR*<S\K3FS!.T&F*?AGX%
MRF$V:6/,)8H<\RM(/Q&2/*=91G> USE=(%?I(L.\4-A%6L89*>ET&+NQH->(
MIMBI$7,MC0T:MOG8XVEJK>T1H5]#WU/0'"5BA_6A:M4WF.4+T0O?,*XR?]*R
MSQ+RK:1.Y-J,#,-[J[^/</&5&>V#1TM>['5U!*%,=7FDDPE]L=<E)PZ4D!S7
M"(]A</Z[;8TTYJ?-79&N"+PR/7QR[SZ$*M8"$4H;*X%UK9 ;8O_-=(.>P-A4
M#P92X%=#7) -+JLTOJ-R\Q$/W-$2/Z@YTTX;=#T;&HH(2*)?.=$P9OX -XD\
MBSQ[UTA!A3@?E13A<[H>M>/VG/O2.,$)B(F8E42:/WZ%Y'*SS<@+QO>872&_
M2:-%FK'XHOK6N$!HI-_3%*+1]IWG(8CC8H<3EF.@65""R)0\IXDV^_S*7,U:
MGIS@,?HR)FNCSVO*F+!=U[+%*:(*2*)M] *>K""R-<Y9HLPNWXE<JK1@)A[H
MTX<MM>5(<4-X?HR!PR3I][13KHRT[UK&]@#XNEA#0 V&D(=-\LPGVASU*X8W
MN"PQOJ4;,0HG7]U@B$H><];+O:0I@,.-NY8^3AVN<=7T$0<0_OQ(DNE$CY,3
M4GZ#T=4*;[I0@'YBH<=58,BP:)4AD%6#X8.8J9' \G?=<:MFU+ ;>%C?JNMI
MU-=12C]UG5,/6_W0.*!H2(>V38>$@ZAQ:F)^?/DX3Z>)F(1TPH?G^TW$)!^(
MGS-<W1?D,S=-EFDV0^N_&G;8"(Q_]5F]Q!K"35A[^*Q>AP86W!B3=B,</VS%
M=&X:]6TM ]WI. E.6"LTB?OY%5J&%'9CIX];DZ,P^RXN2=/9:_4P>%":PN^J
M]F&#]S@FJSS]!TZN$PJ1I4?FL:OU=?%DGG?=_?2WW08G+%A2/GC4*A7C@%,K
M:'P&J>X!HSWB)IBZP<SLRPYJ5,.>7F2K76GHC89U,,2>$Y:0+(U?6BCS1<DR
MU EFVLC3NLE(^EOUEGJDG[Q6HA%;/=%W?H#QSF $RR(R(B-$D5W>,X0D^ ''
M!9W"@]$GX@?ULW4<->AZ C"*J"89-@!E@)M$GD4!1.53M,$2@M+SF(F8=)KS
M(R2,X 1$I(^/QP(B9,XK\:5R5\+MDOU:SI^B- -SX8H4+!C<MDM5DIQOS^H(
MK,E<,='$[]7#:)V787*K?JI=V$O^$-UY-#U!2U(@";Y.S5DI._=L^"R5A."5
MJ$JX]PI&+Q04^LCRZ+% ]]OE$A?4$(:TD+;5I0))WRI3 MKDU:9$'[RJ3B<\
M#:,^FZ[PJF2\,XCUY@PU_4'C#)Z:#E69D#;TJ+)$O)+B+DU2TKHW].T-R1\J
MNB^_PU0FAPU/IP1]EVH9!3;YBBRC/?!:>,4!/\-HT*8C7&N"(<K[@EAGSI 4
M<Z=6145^&MHHEJ(H"X&S=]\59(N+Z@5.U*IYGES2;[<;L2Y4;\!6_FXAH6 )
MO(6(K&3PMM%?:RF\MS68,X0;&.R4K*[V&FW3*LI0Q,Z%)M-[?4UZ^87.^(2G
M:F,[[RA)>$U)"#?+2+Z:9>D3G!1*]-A7+O/QF3B4S%R2X7[5U74>\P/_**OU
M*-_:5U61+G8LI?PC.35B.[?+!6K,7L.:ZLT<@/.,!_5%153"VH5('4*WG_6A
M ^@LCB%Q-S"OQ,_$_O,SW)'/5SS/PCO;?J4!$K[]2#U0)N\WZL'LU4]DA6=A
M=C7L'U1C1QS\ZW(!#<T=&RZ?T<'UJ\8^D9S=[J_P?%5@KE8'CZ#'7]!4,>*&
M72N,/66T)QWV@%J"RT2==9[O Y\D7!B)"!M_0?<>L+!AYSG .3F4[1&$N?$[
MSEJBSB^_\G24CNKP#+)S?>(BS7;TL7T>V^L*;\H1V;/;N*:<V@'A/,J7'YCO
M2GXE##0/18-R7*&4)_5H<['].8BP6QY+XG: _$XB?LI$(=99<8ZS/P^N_6HO
M:TX".2*NA;Q%,:MA]*0$#VHA*(X%,6.PK)!NBVS!1._=^UKPX)N_7BZ7.*[2
M)]PFSKFGE"'@/8_I0L-LY_^UBS(6\_ZP6Y1IDD;%RV4&;Y'C*T,VFU044AND
MO>AGQ+=G\IF[IM#/A,2LE$)T.D(#_6TAH++%@' -XENOD].J9!(7P^#92;;;
M;K/&QQ>5ZZN,/%_G2U)L^'9YV"93?%O7M25'Q?FL[<! ,<6!EA0(2EH3(HP;
M17$(B"%?/2=J8>N=0/H.?]1-Q,(:\99X1?M44!=G1>CHJGD9'XGL ::KI"J'
M TN&N6!H^=S" <Y=09)=+#"NQQ[3L5!ZFG.>182=5#4T)6UC5]#U#(E[O*6_
M,N<?/W?;UC "&!%# D%D664HNX]K_/W;=_]Y>!E<+,,2C^O(\D"SKF6:TGWS
MVS?H^"Z_MFQ;[8J>C,_9EB#*7U#)TZ91L[GN9H*7:<[V##D_@86CGRU].X#X
MR\@24>5JF*S2O!PW[C\P^D1RGFF)'0N5;&WL_GY.RNH3J?X+5_O;X0)[Q3D]
MPRS6UG'YLJJ<=4#'4)L0-PU/F-N3X_V9Z1EJD3<'R@"5?ENA%UQU<DJ<H?D&
M N?/$.M<T*3D[B9<3S)SQ^/^E:A(?K!^18KZ*WA.%&43!L34E&DOV%>O87M[
M-2FU:XGO874Q[P0+W^UTX^M2RL.SV8>FEA 5O^K[?%=69(,+=HX$(:OK=#M\
M@"CQAJ9B'&C9?8P')XT.:(<]'91A--'@GN^@=)@DH(W&TK8-/*D=-G[2HON2
M* W)\"4"AAA*%+ADZCYM*PZ0LCR/BN*%+C),9=97O*(5OET^1E\@6IR?C_6Z
M5_6;T7*_JI-S+5NZN-3]MS[ZKF'N=*IP4&#H %E[VQ)J3)(EJM&A*;/ V,5=
MK6E?6Z9DP)2XBQ6BN#H\J6J>U"%>6;I)JQ!^<8.93&R-CS.E=OEEFQ9L1+FQ
MIZ;+1&_;56''5 )KKF,X%F>K>4^MZZD])*G+%9Z[JZ>3'M=0V+?M%T\\#RIG
M2#M-2O4()]ZXQAEFNN\"7JLH^QA5(+7SG.Y76090G$/ZS_$Z7@KO:I?SDJ#A
MOJH7!8%J%.R.Y@&.\):[VD@0(_9Z]C?P2//B@2PK.GGP4>#JL.=!Y5U='X0,
M#>?>B!H$:E"<G40N!W9-*(T$,6*O7_F\2O.TPC>0KN XIOK#R\?H;Z0XSZ*R
M'"BEH=&"IJPJ4'(ML1S*C&'IB;)?O""&!S% (:MQZ(P.L<!ROU*\O[3"4NJT
M+NGZM@!XILN3JZVC]H&E5C6EW9"ZEXA]\5%,>)O"UN@11T,R&3V_G\:0.7JP
MX(UF*_;U?1^UL#K_[$#C ZJPI7-TATI.^8_S?V*93<K!W :L]E2>0!#>Z!QP
M2<I5IA,-2*YG$\^Z$;[$E-/A5$F^83Q&AAY>[92&D NL>KG.RZI@GK22Q7@_
MKJ.\+A-XAPMVA8:.Q?D:6CNZDLSR;T/>V*LH+7Z.LEWO>=@4\>EXJ:?4#]>3
MO(,(Q0S2&7JN0<TBC@JM !9**"ZTI,#0$R!C^<,2DF514>[OYBL5)OT*N&WE
MP*QA.!IF>,MD1#E/%6?.KV)"NH0(?CP:2%34=\SI[YCQBK[7,JN^C%+11YO<
M< &\WU,:_!/_^I3 O=:%)/ Z\4J6 ?]:7K>6]/0Y8T4C1^P> !P7<AYU=:D-
M7<MN0)7H#02WXB_19IO1=7=+?Z_(IDG86: =W=VQ)\^.OHNV%&W,+^FC E1'
M63_7A59%Q0KS!K[YNG5[2-4=]*IYN_$0>_][G]&]>-YMR^?^,YQ[OI]]1(HG
MGI,NXHJ'%4$X@$ 8>I_13:W8;<MY-L4V#YC.10M#J!KY"&3QNLKTV#O.1(HC
MDW%[SV.ZDN_8NCK?D*)*_W&PILO[HD<:LN_\%A#T=?-)'9G.I'+:?Y/*!QWJ
M2+Z3_KW\8V(IY^B7XO5DYC35.^KSM_.2_;E*&_>P>%F>8%J@M=/J0%[I#9M.
M44?"(+R26M9A%CA):9&;0B?<G,QT^:D0VW*RK]F?,JQYUY.&$9F:;!TR5DZZ
M>KCE5[[NZ?PMTIC.7U;&:C"B<?!934GJ;=.U^.R)\MIG8<,3A]E*E'AEZOR%
M=FMGQA&U>9XP=X<X&Y/RRUJ.5UDBSB.HF.#42,[0L4B=L4!MGJ),.WN3P\[J
M>4*Y!PQ%_+H6>$"[]8/.4+'G0KGG0H_3,R<5=WP^IR5&,82BL&2B(5R1RF)+
MS(;'KX+O^"1YTO!!%3_RM*:2%[3J\V2C3B$?5-&/,9<H<BQ0ZIR]U ^*TNCS
MI@EICML-'#-[5B\&865LG.M]B4.&6>E7SGXB)'E.LZRN79A<[(JV<)% U&1>
MT92VH::=[W)JVBBJB:.$46>GD-MPE:ZDV$UT>.A7TC[LRC3'97E.-HLT9Y;0
M/D9\['J!VLN:TB='Q+4<-BA0!P;:XPA_64!Q+(@9@PWW6!=XB0LZ"QZC+]P'
M< ]G]+?+SR6^P5"3MV]O)?V2SIYJM'$O%^Y'42AOGQST2^-Z_73 :^;OY>$N
M"TP-4HRBC,D6: "Z_8/80_X'?/\,YBK;%B8U>,CAP1.OHZA39!4B81(,2:39
M%8P*;[:D@!H:2;JD+V+6#$QQ'K\"+>[H-C&#?M=YW -L%.7G(-$;0\_Q(?NS
MH0N\#QFBGS/, F+R@S,CU6+RMIO7C4JQ!,-;005+>+5*,OCGE:VCW*2#E_F<
MHM!GN];EG[@>*,]^*1$H\2FPS"NZ'JJ!IIV[J6K:K:]TR]T)N=[)L-VN:)P+
M3[L_&@8<R5>SC-T;#5A#1DKXB0[;PKAW1EPYEMPVOEPT.H*MCU%#B!MB9^B2
MU0M%'Z(,S'6_P+G3ZJ&*BDH7_H+CIE.1Y0A<8[HS6:5Y#GVJOY!QC;GI&>6M
MO7[A/%'ID6-GWY!C+Z@3+\I_>TPWF!H_I$Q'RLD./ZSKI.MMU+E3CE)%0!8U
M=,,>/(RPEJCQ:R*VZ%"(E=Q+MNU1+^%5<BBL&G.:_=(-6YR6"2>,'%-AE]\I
M\S&*UVF.BQ?9Z3+^@N94$3?L>IJTE ]W.H&*<X^REZCSS'>V118AQ"ZN7X/7
M8D69/QCF*O&&=F9%8<ON\RGN2<-M_FU-/%#NQ'$.$PVV^<XS&Y5X3;+D>D.Y
M^<0SM@P)UO@+VAEE10V[3R-;4T9IAW2@A+&CW"7J+#,\E[VA@HKQ/F\R4&7_
MX55QSLEF P=3R:<=F*NW2_%AK5E+.B>X>A2]'.OJ05,^+O7% :T#8( &X6%M
MGG4@?L;_:<M;M1#/$ <)F_^)<T,__7K>=A'\&QG#^R]E-P$[@X2>UVF\1NOH
M";.886!4W* /< 9L.+6)Q?'QO()2$U>T5G9^TET5:1/.US]*(\QJU^4/&>JT
M:96/Y1+*OVVC&'^,\MTRBBL6:7<5Q6F65BEF2=;I?C)*\W->D_EG3.=7QGYH
M]P$#->-=$-"J%6(3B&O!XV 10PMY1CMXT1XPORI18T8U:-2@9C^VN UJW8=E
MG-YZ<9VS6/BF5@=@8U&PA"X?C+4E9^WF@+7+(];&-6N;:N1/7=:VF_<053Z<
MS"KB?L1]1^NF&9Q< 2S9;9S4.]JQN0-MNP_)K8DSZ0V^H9/C,]%BGNF5QGB-
MDUV&;Y>'YE:=("%/;M)H4<^$1PA.% 5^6VI-Z]*C-E7G=V)J9&#('^UOFFH*
M(* =?.A7AA!)QXP'YH?F%B=:[+*H0,D^2OZPO%0GE)5Q*-LC#G$'TERLB>6Q
ML3;M&?5+GHY"98*/OV<VE<7M^YRT?*K6,.S.39L=M#D+^=RK$Y24D(EK!T':
M0:>=A+"=3C!9!MN=2H^XV, \AGLR<#/@/JK45D[55BQ,,PEJ_B<= \64?P,+
M,5P.9J&3_MN<D[V9K@N\J;=Z?,I6+<.2AF$%="3\S%619L$\5AXB[PDDSZ-R
M?4<M]33!R8>7SR5DL^'5N.D0S>,J?>+;R459%727*=B2Z3>DGXI2D:!K5="2
M1E%+.U0F2-VQ(/88[%>0_X*SY)%\C, +4KT\X!C^34\.\F0?UQ1*4;/.\^;R
M:R$8:HB66N'X]I!KIYS;1,5OF%\D+%OZ02;0J'005<9YSND1%;"^0N)JEMUB
M1'>//:Z;T4/0K+^\P?OR&7\.D[5CC+%$E5MAY6@L><+H\Y8DR9MUWQ"&&ND\
MUU#XK CC3!Z0JDD8G==Y7(!M?('YO]<Y2ZJU=RSM74D"0=-H05/T%"CY"M]6
M@*1C"3CML4:<S3R.BQT^<*6RS2++,Q=D!NI('[' 8"N1<%=I'N5Q2DTT%IU2
MTWJ1#7]3>ET_YDV*C,= -RD\FO%<COIJ$-+6(FI#VAI0UH+8''7:>N3:DN&L
MDY2$<$GI3#MBRNK0]D"M\WFYBL?H"R[OHA?8&4K; Z,M6+,'A)3<^YO8'J<"
MDA-9!\>Y/K@.2K+2<!VDMG ,*F*%;Y>/K%X6GPKGT19HW2X_8+H*@^6,DWF>
M_,S=73?D&1<WZ28]WD5;;5-GQ32E[649-06IO,SXYXK&@KL'"0L/A]FLL#50
M^(%!11PKLWUKM'1A!KSHM7!(?W7.6#\S( M.'<#-EFK.L7KMCO<<6S".X3W'
M6M=\U;V$']$_"HQG+_3)@SIZ_&8^Y!_"/*\"U%RE[]51AO]2'CR=\A_!5L@0
M:VM_P?^X20##R@VR4F>0Y&>;TM[0%JG&I1!AJX-9 M= <8O65!EQ(F>&RI_%
MJ[",I67*,GR?,ZZO*$"XY)8F;!-&\M9,ZM/VVHWHJ'=E8E[TN3(J9?7DH=\Z
MW@B6]; +ZPSM@:$#9)U]TQ1[;Y0W$@)N&M*@Q<@J9^=/44$!0Y@VI'F,]XR)
MNZ!!849YDT%RW\D VDY_*A,[(Q7$F/V\W5HW9D_;]&?,[FE/V)C=@_1DJIEP
M)80QR_!Z-69-.*1OS.Y8/_]_8W:RQFR/*C,S9D5RYMW/QOTJ=7#I!YSCY<D2
M(/FTOO^LKU4/R3B?Z/I,!1_*KZ?2GC/'G=#0LK77CQ)OP[O?U/2_.4,269!<
M=^DUI6X:DW&BR* )^,W!.M?QEO>]9]-'WFW?>3A<30YM.;WI>,=[N3SF$Q>S
MSJ^\M2?4]10016<(G].4IY/V?$5:G!#6T:P6T&N'5.YOIF&I'CB:"F*!(-)\
M\BOJ%U2W4PL.MO*LO 6D6Z?\K2MK%1#-7["<[%'QTGV(>T<$\\).HYJ3R(RX
MKQEGAE)G>OKFBX;)5T-$7?((0)ZA!B8ZP'GXI QO'$U\2Q)/W R7YPSIU& L
MH@R*."2;-$\AO+=*GYJ;?@*=(?F6;C[UX=:=IUGGY'EECP, 87)B2_*::#)P
M$DO8Q^A+NMEMYGF^B[+NCQ CW%2.K+T<:NN83LMV%S,5!(%7-!6H%I<UMQRR
MN[;56!$'>_ $#\AO\)XA*4;Y7>.T9L/X0J<_@-.XCW>!%U7]+?WKE[1:I_EM
MCO\+1P6[<%@4+W"W<,B,MMFTY7M^*A!<*Z"+'?/EDQS77OR"1;5.ZD*=UI!)
M7+[3'X<ISI+YDBI6"O]Q79#=:GU%[0OH26EWPBA3<3IWI-'XF$81@-G/I(IC
M0DL*BGTSY4FE/JS*\TMSK#QGH8_*-:3$H_] ]KNG*(/$9/,6X<]1MA-MPI3>
MU<U,+T/#>8YZ2IUG580/>(]#QP1UU"/M8E/"SIT=UIK2KS/EM,?*1:@&^EM'
M# 2L/Z4VI8@1CZ>QIG>J>W[.]Q%S?R$L8^*-.-NE>8.65^IQPKXVU_H(;>;(
ML,H/D]*Y0#W*6!PF4)U8]@P%>94P0529_AJ4P$]1FEM5 MT&O2H!(.Q:"72D
M'<B])F$_&!=C83]EME]AGV=,JG#"4DQ\B$IP6VW  <YB(X</.-1>UA1B.2+.
MPU(:%#PGS6P!.%@49@.D.:8/4]I<;22(&7L]U[6CF_>7CRS!U-4N3R3W?9)O
MZ5:X&V[=>9D[(%\GW4*;704^]B7@"%/H3I+51)-_*N)6-O)6XOC;%7GZ+L$I
M%S7ZX5C"Z%=_G6_HA@HBG*^R:'4D2\+?%:7FI!WW.>5J8@BH>14*,<_(*"-\
MUS;<; N\INHM?<(\1/03KB T_(O(ES3^AG9M0V'+[FL;=DC7X=5:#A2;7="(
MFE/OAROWB(24$ V^.56#Y]1FG5.;_)PDQRNJZ&<-)=AMQKE<P^U&((: FG<=
MV,LQ,L8&OQKP<XEOEY=EE6X@L[% Z?4_I*GG#AMSOLLLV1VLEMX9NB-9&K^@
M7^M_0^<#%/"6R#',<PP<W:F":^8V?XC89:E=F>98Z/D<>UPWZDW0K"^OI8B^
MSHIIH2\F'D<@#]<)RZB^JEB3#^1Z'!48HLHYW^G8G^O['G07<U>0G'Z,>0DE
MKFWX?\?RL.HVHYV*78V<^P3 SV@/"!TBFIS^UAXL8FL$O&^9-B1_J"@,YBXJ
M;W=5647L9K)XSS3ZBOZF2=BTAUW3!G0G$#_C/L$2D3U]](8J5_[U-YJ[*8M]
MTSYW_Q!E[,[X!'NC?*:NW!=W^\/Q&4%TF.=7&=S1MC"4:5+2!Y)O::J$D=;=
M7U6OR=M0#([$3W8 B"97W;HIH"Y87EVE91QE$*A&M< %-7W[7!8CC^JX+P1-
M.E]L.%W$"2.@C"ZA2!6E[=^Q,<97HL(LORKKYZA(X28VRYL+Y58$2DKXG*9:
M.FG/M<0T!.LR7?%H91E'RD;,2"+-';\B,B8:MD3"FRB<$-0QX S0:E^ #RRZ
M@R(['5&=%P5E'=LO/E+J\R^IR",W]KB)(/<TZUJNZXK&>\)G"$BC7X%X&'?
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
MSA-<4,QTY:'6.R1$ZXT\A+@F,-VS7<*N5Y#XMUL6KBPZ\?9"4SN1OT-L[DL
M</#<1XV_T%ULVH3. @S$P\A#50#P,>HDR% &L?+K@W5%^W[L+3/+7M2Z:\FO
MZ8:TZD<9>VK/RW$KC)U68].ST.1>-K3-AHEXLLJD!,]O/\PLLF$T06TQ2:GJ
ML<)46.P[#IOGOHBRNRA-KO/S:)M6439\'5GF'>TXZX&VW<=5-\014)^E.:KI
M![YU+,5PHL7%,*8##W]0-1U&WC(T'02M.S<=.-V@IL,88WM,!REN^4[FWH:>
M#>HOX7/:J=N/VG.?CH-%##**8363F)5$FC^![$LNP)KVI=3+IO;E(!%?]J6,
M=O+;#T/[<A!-6/M23JKZ[$L%%@?.TWL(K>\47O+&E$&+MO+[RE/V=<MJ&AE^
M-49D*/NO+IO]2CKSM$-<$-ROK5[ C4?RD1NL4N]H2NM@V\XS>#*::$\TY"U4
M.2X3+=;YE;$C/+UQ/U+/:LI4;YN^92ELYIQAMA(E7@79>]M;B<T;--NQ3W =
MKI&%N=QL83Q.-_K>5F%!F/SM<IG&^&I7Y"Q?;S=_1>\F7^TEG;#VT<9="QD'
M@%H$B$) +09)AX"?CNG%2M<=7+8=9%>O]AW<,#3^8Y3EQ8KHL=3O@L"G]@TI
MV1%UWXS^@)>DV,=-LVS9<) A6!#,&]1<$/0)^W(_Z"/4<;WXY(?&%9*0I^46
M9)389_3D)_[E%[JTDR))\ZAX80F5/U%>TS<IWRF^U75.Y0"7(E/1 T5_JD,6
MV81UBVP7/"D?=QS5*)U<7VM;,)"=JU2!DJ+XF#IF&DUO]":O\B[JR_KV5-IQ
MB_Y45D-YPBJI@>A)Y>AS1,/@D>O;=!3(B:":*8A^7OM5 #=I#MEI"IP(3W?[
M'M&<HMVF?,VY+DV=262&66-6[ M6 FF($N?$0]9K[Y4!(L,DS^>J;86OV^4]
MCK.H+--E&O,J>AM(D2FJ1V?0@NZYJ3PEY^>D!X71CL$@C@;]&KK$@\[8$ L,
M]R[#T6I58)XZ': ^X7R'Q\[_Y=[2E]6AUMTGS&'D B5'E>0LT637)*1KL%:G
MUKMV)<US<=X#$%PG,AC*Y3/]RJ2XP*,!>WWG!-O6&11OEV )/5)#Z (O1&IO
M[''MO&#]S?HR6D7T=0Q8"WTQ*A52$T=T(B6C77"6XFQ$3(@JO_Q'N(@/=T>>
M,HAJ\7A\JWI2ZS"017!T*<48W]J2J>_&Y0#&!:3!.=^5%=G@8FQ!5WU=6YO*
MD?%D1O)[V T25K<(-5C";W*4QX28,EI%9,M&9DL<?[LB3]\E..7B2C\<2RG]
MZJ\7=:C#/,]W47;/4LH>2>/88XI2)VK.N=%8TT2<*.)4O<K0*">)+'O\JK''
M(DH@"N2V6N.BKF52TBTZ3I_ ,!TLN*GTKJ8"DZ+A_!IF31?M"4^F^*;:(! C
MSGJ_/0=)JPLY"VSD:?V;='VM>KA/Q\@J!]&YNU4WR%RBR#'/@A25:RKH\ ^@
M>HHRV&)P 1^STY3>U14R&1K.18Y29V&-[$,'Q^3*#:L-"3'BLU,#C2?)A&/)
M@IH!S"W$+GJ<@RHN7LY)@GOL-86W-,PWB=:=;T<9!'2 X0PQ%(@4J$:" (IW
M$T^%^423H[[+=14X)JL\_0>K)U9'TXMK<PT^K5V(J[=5?U6W>LGKE=BRU!.M
M>EI[VBP'>D/]#%WFD*X+?8@RR/D5M&,\ISB= 46EUKWI@*?<= #=T6HY-F.)
M(IO\:J>?*(8BRNBJ/4\V:0[EU")(4%??_1G<$2B]JZFYI&BXUF,U"&:]'<)
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
MJ(7Q5-#?S(]+KCZ>2Y)\S47)^_SUF+,U<Q!;OR%-=5<GZ'RADZ017I@.Z6A
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
M]$NP#.F?*.?O-&"*>D%QCI&J=ZMA%)W6%(@4;UAYP\H.B\01-DP;5EE>GDP
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
MFHPFZ>NJ;V2"V"H2<Q*Q0VN-^_./%*%:U46YGQTLB2=50VLC00.K(D=4KGH
M6^LGW]\S:-<]@[!I9,WTX824<9TKDC)RI'N0M*U^TF_8L;O9UC-F!EPOF0W[
M5)U(4N'#.YH(Q2 K1//GVR3D159VMLW9,R\^(]E8%7I:Q!8G33KI%'KJ9^L.
MY>SY*-Y<V"R==O+&!@(S=LC-GF*WQFV:[CE5ZVPPZN1@TY+INZ ^/IS)9-3/
M,,3RK60ZF\1DQ=51Z2*6-74G7,G?(.MOD/5Q7"K,UV.(I ''&SO7W9 BHK*M
MNB(JF))!E*PN5V2C8L*0#B:"*_)JPM)(:_S0%0F)8THE3I^Q1T=*SR*)_VWL
M,8]ROL4NT;&_;W@ M3)&Y(IH6IXL4IAV[,NEI6S:!&&X$C/<<AJ!G$:N1!"W
ME)',0>M*!'%+T:CZ*US9F)K/,Y SV94S#*#MRZ/27-F%F^=%A\@55V9+9TBF
M18"3*T>80B9BLZO(E0FE#%Q!_)VN'%6#KC9!I*0K6I&.U.>QY$Z=?.HS)#AM
M7RPMPA ,I N]#2AZ0NE.9,!4H*-^.M-\! _W*3P'9)U&"H]/)O 1]S[FV-Z8
MXY$&\8XZ@O*N.A^OF 9S3M)R&OR&\\4Y6\-DB6A3#*5J=Q]%Z:,H903[*$J[
M;!H?1>FC*'T4I8\GM N6/:%X0H_C6X?CCT4XWK4X4F>'Y8XB'<Z.T;OOO;.C
MUBAHAQ<8<'>\"Q[7L2H!:_O(3!_^+(6[=R"CZ'2%@$CQCA%MCI%+]M+),T+U
M<*&LB6->F9'5+2MO2Y[.KM,8/^&X"!-!-2YI.T.D\JWV#B75RE_@U0.1K,H.
M(]A1P,?7)#);TJHBZ'QWV-3H"@W<P#H;*+BTUE?VEX+<[P/H,7+OH2-LF'2"
MLI,5Y^@&/Z'XFFE_Z1PSZV*292C/SIX_AW\0>IZ$F<QSU6($J]C<D<AOG9=N
MW2U'T<_N%Y(RC7N%<C29LW.EN;A3<P?O>W30]TC#&/'Y*I\<HF;>Y^A]CH?B
M\#['?632?9^C+Z;0)*$V^A'I2><8NPR;40W2 VHP=BG!700^\W.0S$_+!=$\
M+UK;<*Z(J.,F#89:7''(=I27W*)PQ67;44A0F]R5.26O.@5P;HQ],P)I.\UN
M.E>6CXZ@#W=2Z@78ERNZK6+01QMOCH&0C_?!G)#X&TZ2($SC@.0+1 .\/2N"
ML#PL%"- U ;5&1#2AC(?'W) UFDDSMH3HN$# T8?&."=SG8YG3^M3P%>E>W
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
M Z23=P >W/>+#8G%NN\FZQ>L-^ D>Q-DQ7(9TN> S((,SU,\PU'(?@VCLH@
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
M)W2#C>U^6F%_KLO1WCS@79?U"25Z_!*GEJ0YM)OC!#,Y!P"Q3S#=LU_WB(G
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
MNQJ@%90TW(9KK7S4T<_A=E+KA-35.3[<YFNSJ+IZX8?;KZV3FB)N;R* Z7V
M4]8*!7GXO7L8$VPTK<%,*B3YD*8#LH8+:;J<S5"4XR=T7;Z=A_ [#^CCAQ).
M"[92UDN&I!EK0/FRN4#K?TN;X6&!J@(=!U3W._C)1A!M-RR29><AI<\S0LMK
MUBZ_KW E.['XX;U[E:_XL2_OD/I>76G(9X8:]<)A3/HL+]8G)".H5'HS'CA;
M':5)0KZQ&2/R"0)ZFF0,OH@%_,$'L(]-?C]ARE&1ZGWD5XBI1-7*+QAESR\:
M*_&O-+))P6P)X9'?:8;.4(IF6!13(&AM1VC$X4;2&!=QV,$'1;@<%/$UC7&6
M4_Q8Y"CF-QFR*9!-9U>$(CQ/[XO'#,<XI/@H-EI] ),3Z6M*MQ>QLH6Z7J%B
MGFI;PQ@8E[O2QX#X&!#3X+CE/B8/CK> G8 ZT0G"XNU-@U.#QP>#4DX(/!_0
M(#M!,+V]L@L6UCMGA 4W*<'">3]ZX70$*<&2^N"ZI," *%ADOXQ>9!W05;"4
M/CHC):"5;\ S^BYX+#)&>I;QRGF/S"ZO],$P*2$'7D2/S()50:,%4W;*2_90
MP!9&62LOC/XJ<(8WK6BXPG'+JNJ#TZ'3&ZN)&>_'/2!K.#_N'7\+XDH!-3\/
M6<A]\/FUSYLY*O1CMV=KAB8[ZLJ/%,E3B<'][&!)G-;=T-H<^>>[&<:L<F;[
MK.WQ!QJF6:4BB*H9JPP1O!T%JSQ(/'_>E(_+KK.L0/$DC?D'B2>HQR>8]+#4
ML'&W5:^N8[9!X1GF1%8:Z7HE<NHW,6D\!I_7W&)?EDW@\NKX(,OF5T=N)H^9
MK";!\ \<MQ#/"\K-"VU3\,7S7%G :Z;V?M GR;T?7!$GV_'#=(ZWC:=,6:,/
MBS#]1$C\#2>'@7M&:'!%V'HG[?YL=>08VO]&WUDD>>JXQ?F%I)&)[;3VN:XL
M\G+WVG&H[;2O?>X(A;K9].MGCK#ZTD!/,[ESGH?98D/G%27+/2-=( 1)CR#]
M:(Z3!F7"AG-^7:@Y>R!K 6XF%,H^49*)5G!3-TM98C-[.MN?+>KL'0UA<JGX
M:-ZQ1@.:QIQ]Q.GI1)PVH=VD-<+OBH2: U)!'@-7XG,!$T;N#W1%$/X&):MC
MM0U)XIC/FHUB:&^ 4Q'P&H0VT"N2.AN<BL77^XY$MK%3$?OCG?;*O@NG$@3&
M^]Y :.F :0@D#Q/_KKJ$4CBG6FO3IAK]65ZE:B&Y8?4JB:/,*U?VO"V09W-
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
M2*[7$C?K@8C_"E=AVDB#N%4/)'Q-<5F]FLWOK)&2QL:# N&]+SH8X#W06N\
MWV0TWX-NV%^'BXM]]?LYHX<D."XI*X^FFC76W- 4L;4[%:2I?G!L[8E-Y^LE
M(;^VJZ&UB?N4RKF\*0%"PRC_#>>+\R++R1)1ID<G!4>'>!PA^X]K, +6.HQD
MXKZE4OSR>X7JVAAT\9P5&=,SL\W>6[>BE?IX%YO/:>H)<.[_E/3 LOO ,D#_
M("K'_MCEH;9[$]!)Y9Q,CI!WJ!8[=F09MEJ4%,VQBZ2%6Z99(7).*$V[B(IQ
M[YQS 22<1AS(N50TD%B:H"GG)HN_5L9&Q[>-;LG.8(@M[J!U(-&A$=>CWP?V
M!.,.'A4RO2?G@*SA/#GGA+(WQ%[?US3<7.4T26.8;T6YLRNNIY'[?6!KL;V#
M1V6M>T^.<YZ<767T)B_.KJ7)ZVA&[H+ROACOB_&^F$%],< #S3M=O-/%.UV\
MT\4[7;S3Q3M=O-/%.UWL$TM+S,JY.>1],3;Z8JR]*A  V=CB<DE(.D_P$XJ#
ML"S>R2/FYHC,:;A:X(@UG/,L[AX],*T>:-PATX%J[Y\Y(,MGVOA,F_X76WL'
M3(>U[?TQSOECQNG6N.4[&LV?;Y,PS9F&?OE7@5><LB_H\()%2!>3#B;OH?$>
M&N^A&=1#T^[$\PX;[[#Q#AOOL/$.&^^P\0X;[[#Q#AO[Q.(],]XSXSTS8L^,
M"NAABXL&?5_QHKEYP1X?S @-PCBN:@GRNUF/;+D>?37=GFS<:=,'^1V\-Q&O
M<$R?.>$?-G_P=_!A#\E8?_W[?]T>H!?'/W3VW*C0\_5>0,_NA\$]2=Z[U<6)
MTFWRM_>F]+'HAO945,IC+<(O^ED/86O-[=,6BPL3H0^EL:TFDC=S8I\0@9>J
ML:T!QTGX7&K3#V02,5V (J&&('*C@ <PZE3Q\/Y(T3;]6[#'^4\#YV_>C8G2
M23-VF<!P;> 9-G;($CQ!1(;!V)$FI14BUAC'CC8ISX-#@W7L"T$GXFCI4O"(
M8Q?$L;5]8 O^&"/VX&A]GQ>_PBM<\E_^KK[H$6Y4>I!Q=+$%M1Y,]&#B*,%$
MI;G>'CMLL:0\5.BA0DUPU,7>[&2?$U3J+&D\V9ND I *TM7#@QX>U (/JNVR
M'@WT:*!' ST:Z-% CP9Z--"C@1X-[((&MC$$].* T3:? <7!8YB$:82";(%0
MKH#Q 0;1A-^!*?%E&OK'GOJQ\R91>9IDM^$SWVG6-Y,+[+WZQB9MZPU%=RA"
M^(D3]07E,"9D78PPPO;.N*II\Q!^1UDC%_+VQEBXP>$C3G".4<;VWFF^0'3O
M*SD[L+Y&6"N61<+WN9*H<[)D.^D"I1E^0KLZ1&PB36?B>S5;CF* W75(4YC<
MAIC-L?-PA?,P8?0N27J?D^A/$8?@C@:8*@.R1(17T5IO39/7L.CWVUA#[.0Q
M*Z]%@1!]V%8_Z>=AMF!["_^'.X>?PH0[D"?Y>4CI,T[GOX9)(<([E?H:8&VW
MS*1<")J9 /TKLV-[BNUM]N+:*L!>^MFY9.HV>4;,1BCW^#VRY,L:W$\_2Y\(
MB;_A)!%0?OBS?@+W%*"=0B>@5MK6!.E/[-T2^BR>ZG5-]!/:K+[MM3!Y++U4
M'\L=;D&2&-&,;]?Y<S/UM=TL84F^B1PWM(OL!BVAN8-^)CZ']$]47FY]CZ*"
M EX"H(<=;'PA::3,R7$G@Z7D;E"8H<VL>9:_%E@G:YAI?#G@?J99NL/S!3-F
MOV:HM ) [ CZ&&"%V^B5]=+\1F1M#9%^G>9A.L=L":\)$[^ AN:&&-C7ZT$O
M0-K!1-W(M:72:)))6AHA>Q7B^)(GNK%%N,;A(/B$0L_15_$TQ\@=#R)*47P9
MTI1MFMD>K,A,8QQA$3OPCCY(3HWHZ>P*IV$:X3"Y)5D)@3;HNRI=G8G^&XI8
MH)UGEV5W3$WCE&GJX$[D9:MEXJ,IW8^F;'C!O<8(C39,"GI6.C<9COG<DP;
M$>6*0.2L[LFDA4?+E>4#EA$8U',E^! L&7@HS=AC<Y5%(_;<@$7QLR.B4$8%
MP!)ZYXB$ (Y)L$S>*X?SDCQ,](;SPC<86< +6"0?')DF<#@*+)I?'!%-?2 "
M6 P?'1$##,B':W"NJ+DJWDRX=%Q1<!7\;W#AN*+C CQ[<*$H:[?V'\ZM3V7+
M5P\,4X"&K3B5C05@NL9(E">-N#)MU&2C&/GI"L"@/(%4<T-<@1O4!*42YN0*
M"M%J*C5E30T'0!@XS]4DU!Q&.AP28?/,40RY<P6;4!.24F:&*QB%XCP"QJD-
M!UV,:0MJO?=8K@#!C MHP(<K7DL OR_="O*825=,"C6QR+/[W%E *C)134MV
MQ7Q0DY)J>*@K)H3B7.J2Q.^48:$FM^;@2Z=<G&K"4<U W(E*>]6B[==90&9!
MMF"26),:H!?!MXJ%C,#CFJAMI$@<O-R1EM(DM0666_>WIAR)G"U('Q.L_%%D
M^>;.@GH:[_GT>@S9]L3?!7L1Y8R^XQ,MPSFZ1_0)1^@644SB.Q21>5J.(LLO
MTO58HS4OI/-!V,XHR:7,LVF1LPTFC9G2U4S]49?@9W=8>6>4E<-]KZ&<$Z"'
M 3:JS9Q1=#F;H8B1\P5]6[O@F(1O*4XCS$[.Z[1:R=/9)"8K277U[@,:*,12
MGLG\_9"4[7FUQ0%!;?63SF;0SH@0D%S;QE".KL#\N2(4X7E:H7W1\P,-V7D2
MK>MQEG\EE5:_/9@:%MLP#S-9NA!B/4[RG.+'HHQ<>B"W(:"01E_#FL]KE9[G
M\L8&,R8/]I.LI@"H4A^?BJN:BMLBL5*AKT_&;2"6"? ZRPH47Q24*PBE5E"I
M>N4E;57RIGA.*?:WC,7R_V>'5E0;9N4C6<-V:?^U?['"[G8Q6/XV+=7:[/([
MHA%F[Z4%I])Q#+%\AU8%C19\IC%]B1VLF-;-1QFWP"&"]!?;>96A* HCF.>T
M94$$@V!"%[)!P,%8O>(JVLF)U$!HX+%."LU*MG-"D;)<'S/0Z6(=ZP,I%.6B
MX$1P)[!"44800]R=> K5"=3.N>9.9(6BO !@K'.;D8756U:5SIZ'--<=-0&)
MBU3QA@TW72P74K-N[]R1U2R/+EB+<X=8&W%!00SG3K#V<TL,;@T7#3@B(34
M@*YD&P%+E&F-TQD@2>EC)=L4S<M\5@M%W FO'"!GR16)U<.>PZ4QV;A\)8$9
M<#UT+."25!+]1B$,9^D8J)[0FVB XNXO.L85TWN(-P .!G3%ZAI"B-Y&TR_<
M4[/HAA"MI6H[W&PTJ80.-M<'5_+A)N=IRK>C26!Y:8Q!M(B>@NT'L%.=D7$?
M1IJRM5HY"RY3!]:^2@+/@%:O0Q)MCF?2F^^;DAP%K]\&&:>K5%F":$]GJ;X/
MJGTGX*;D$R<YYH$ R79%-:?_]O(83=G /=(*3P[.-C%U&8K^,2=//\4(5^%T
M[,-A%)WHVI=U[)S\5AAXF)\R38*K6/;(DE[6 J/L>)KQ;W[?O;^>W^2:^F$?
M8B "L];$GE :IO.2L;/G79/;\)E_-?D6TOBEZ5A>!%%(DG<&>\ZH1?8;XI67
MF3+]A&@X1QL[G"E]D3 B6>_3QR?>*T)G".<%.PPV.O- HJQYDMD@\([\?&(-
M\RTKGZ@X'76 )YG,R^S*SIXZ/.@F>/0<H['[HQ6:P9(#/3)CX.P /MV166FQ
M@&V>P1E, =F=F4/(>1 B1BCL&A7%A+A;DC%"@;_4;$S(&DZ!495KU!4'1I^6
MWT-RLV0@H!4TKE2[@9&?$\GB]#=92Q.!_$W6/A>J,3AW:!3A=!.HS-C'P\4'
M&HAUU2-I ( X7&#@>*4ZG.TP0*S@2-(DNFG&)Y809A"W<2S&3\\^"W%QN1+=
MIVD*=\+"AHOR,Q1<94KE;1NU-I8P0+L47GTQ@J/<,KK%OL"E.19,0)<TV^R[
M^J(QWP7AKI900'@4:@DL;L-0@X2;/<(?6D9G]OQ8K=&:@]#NHS</R#(1O=GS
MFX5%<PXRG;3>/;,COS;M%WI-$*"SO_*AIXL SM",4': 1$F897B&HU+L1[?+
M'3#8PXAVB:$#O]MD]K?F6#N4]A73= "E ==WY59F88,(AGB$OT7!QS3("+8A
MIL&7N78[DJ)OK<M'5IQ@9(6)\K-CD8W6PNECP9Q:U'<&6T7."6O N"7+:R#Y
MN*7VP&U_Y8G'LDZD\NC-9'=N;4G%-IS9.V#$D(G;Z/LJVBB^B;[OLF!V^TIM
M+-GQ(9B%F 9/9=FE)0JS@JXOK=_[GLR"&4[#-,)A$K"E@]C/Z[;,ODJ#,* H
M8LN#5W-Y##/<UG6DAQB=#B6=''DWDWDWDY[W#7(^Z9QZ6EU2)957C(>R5MP%
MSOCVS@@6>:%$[4VB^UMRSIZW'_^%$64GP.+Y!CVA1()>JW4VRMSGW;R[HNBO
M@E<3AG'6U-,@6]?IJLBS4M"OI0Y00 \[V'BCS,8;&]EXJ\S&6VO8J)OO4H^T
M0D\[V,J.-RME!AO'L(35N\VI"9N1@*[Z&?M,4O3\.:1_HORJ2.-LDI^'E#XS
MRF07W@)[>>>J2>?JN/P/5NBYW@EX.DY 106;]')F.2B\1AV^07)2=<85>34[
MA)2M(E?<(#U.);E:Y8K E.82&#MP13H];.M-AKPKGK1^154+%@SG+!NSJ&H!
M"5=FE8[P#\MGB\WA'S8ZZY7@A.$.*FO][V#OAHD$1'%),_;LG.*(Q^?N5S=K
MG7/8_4F67 JA1JYW^1Z09=>]$-"7"4LF[&O2:'76\KSI!_98B=.OMHV)A*N-
M$,M '2EP+VUK8=%9449[%89TG3)NBM)*+L.Y'A9A^K+6"(J'N@E!G8(@_>BP
MI'E5EX.J F5-K0NV%VQ/>5,O 43<*.]A:)3 R\)FVE_ R\>?@HCM6P2*]+GY
MDKZ0](D=?B@>YLH-U>>/\J:(T0G9YMLBNC-IWTX#)\WQ^3_J5^/DJOFU9-Z8
M'O3R\8Z: B^9M&\-*-)GM2(D++:Y0R72^#8)TR_A$DG#%8=\E(^6\]%R/17'
MZ %%]*%PIQ,*5P_.]E+.&+KMN2+*9M>O! EW)0:G<3X!H'579.&K85@=#F%[
M-0Q3&-MPR\]+7!GP&6XC&.\E-0-Y60:L[G'JHE;&$ 8H(?+R+I:'TWLE#=@:
M6.3*%PV=X/3O"*&!WT7;JXA.</HW!YJ I:Y\3]$)KH N(27@%^$O,>K%X0N6
MM[_<:&@OHEUAW.SUS0A=AFF$UIAQ[_';C8^P)' ;2*>/V#X@:[B([7)M/C8O
MWT?EY7N[>]?G"SY:72"W@<>/2VBJCFUKZ3.47="XXW1-*P!N:3Z?H);4O?E4
MW><KS2AH:&UAY(3/*1B+I!W(*7CMXNOQ.06VP<S6YQ0XN0[<"/?UD=C6OAH?
MB>TCL7TDMN7'AX_$5A%<921.BGQ!*/X;Q5_3&-$R8JZ:&ISZ[,5]Y'><^PK?
MG\[V[C!?3R4E6?;^=/M.3]<$;/(,]+D$(PU='A Z]$D$/HG )Q'X)()!YA,(
M37=%&CZ-P*<1]!WD,KB"[Y,(+,(J?1*! TD$[&4_DM,6MC( YM,('$HC.,D%
MT!$!]HD$;B42G.0:Z!)),EPJ@4W5U,T&I Z7/G#*,E8,3X4;7"TMW%$E<0SN
M7X&+NZ6!.RIQVY\SL_Z%_X^O3?;-_P502P,$%     @ 3%I:4*_]K&M8?@(
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
M#6][<V_WW;S?\J/ROY$K3#?N3* 7=\4,T<QEO =FO"=G%U^]#\";HCCZEO>
MH'TO$B@2 JG>?X[]'!DLP@:N>9JW7>#9'"&5UCYN;:[_@YA=\<"/]Q@TG92:
M)2X=G8R.LG[@K0JR+EZW^5_Z42I"686ON*MY%*Q+&*9]X0-1_+JVR9_[(@C,
MYW:< +?&/Y$;?\C:<3! 9OTA2X@]PQ^!>?F-3#+EBU //XO[O_!X#OX+!NW5
M3GM:JGKU520_O;-(OJ9I?WB3!=.__]WVM .88L7MJ^$/7H/'68M9AK*ZJS"&
MSTPZKX=1E(OP0O;C)%OS"!H_ \L$G@W:W?MV'(=M3"$ DKZ;\EC#_+?WM[9^
M&3[:S[ 9P+<.OWW[?OC%NS@^/[NX\LZ_7UQ^/_QVY5V=>2!9KD!\>%L[WMF%
MM[7W*GCMG9UX5W\_]ARA8P7.X=$5_KSU;F?7LJD73.<H$N+$R[K2ZZB45J3]
M$5[E#:1(/%!^93!97)R33GS,FG*)_MX':*/!6[N!&. C930E 7Z6/ML3.ULM
M#W\8*62&=@_^R[P;_D"),5(.;6_/*.WCQ!%MJR2-%I REXL#$U 46;;SY\*;
M"\.%KRX.OUV>$KMM./'C<>+,$I/'[@:OD\0]6B1@&9%Y!3TUD#XF"<*U[[T<
M6$X2JDC^XCDFQ'/]FS<5!XQC\;)XF2?PQ()F*N-OAN<=Q;V>2M$KYYTHD%K
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
M]T-O%KI_:P)F?G>RH<'W5V(/1:7[I=^501XN-X,;FSSPX8U31?O!8A3AA_D
M0>*3YEIB/_3 AU?9X_]VS'K8RFTJN']3^\H9ZM_-DC]##?S0C-P_Y[6[4U?$
MSZ<=U"6VG(4S^BW."*Q") 3Z>Q(GM_"G]R6.?U)'%LL%W!+U>7<[FF$92V7M
M#"=3@U%7A.PQLB4,-M,$7 R$W]+KT-/IH 1OC-@;",$%=X.A@!P&P;1\1B/V
ML)J1\3D,.&B'%W$]U(M8L%*+#XHQ7!J0]'I21!KQXPH^@J)X@WY!!VC\"_SG
MFM&:+R1&1 K$\7=[&V"X>&G<DYZ/N:HM;Q#G\&?D*>Z,.?!&#P=!1' (G3@,
MXUM"#(N3('UO9](3@V&HU%L5AL/?@E(;!C47UW^==NN_EW= E]GP]PI/8\WU
M_5!$-7BO,'%4MC,Y_%M;ADK>U/P@TXQ EVI>DDAL"EOW0_QG[7#[,3(/.%]U
MZX1A^KSF-7%T'<,>V.\U.'N$ %/<$0\_(P:<3'IIT;66@,@28ESXBXKB,+X>
M@'4;9K#*UUVB703 'T,(^ICH%Q 5;" YIM*]2D4W6##I<9\+%/9YQ']C62_0
M7A[Y;((3W>(%/$1=\:N[(P%5 84BFEV<(R@=)QDRBCGN0*((^SQ0'<*W07QQ
M@4.+4\2^ZV/70#C/")[3ZX>Z:S9CD]NATJE ]53Y>2@0A#CNF17DP7H@@F)?
MD5> ,BIP+!8KC#N]R??3<#S^<V=CYYZ,_S'A/HQ,K$C#D6 @)2P04*Q'J%;<
M<.A>;RAI;'H*[RP;G^%I-5;2T(,= 3'+..\MU,>_BO'W-K>'\(!+0U^<T1*$
M'O#*$ \.!1XRS@V&\X:G!<@M3[-DP <=OA!M%:(S&(XR7RZ'9NJJS UYS9^\
MAH%F%Y2XZL?:D$?#??1H*PP%I'X?<3B1MQ39D2X;:HCI^<_O8I)2PVL:7C,+
MKY%@>%#7(;!"$,"[;!N@MM.C&#9]SPC?#74]_X%>3-IJF$_#?&9A/L9!1)W3
M$&@>&=*=2FUQ!X+Y^Z#QQ#V9I UA/?]97DRR:OA.PW=FX3L]*3-L_1'D?N8%
MZ/9!"+/4P)<3ZY$1#$ ZW_(NP5<!ZT7LO^?D*R><\E>N_)]>EB>1(&QL+X/1
MM.!MRN=2WQ3#41T@0;X3$3S^HNK?QJI; *:QF/3;,+B&P4WT7XL@[I//FHHM
MXHXGUPD@--&,9^>S=W3XV4OC3G:+,=SVH(8'EGE?0W+/?\H7D^ :CM1PI%E4
M+JJU3HM>NS=QF'.8.I IO(89CTWDP*](28HR+^YC^@JV'%*%)]RXJ!H2?/Y3
MOY@$V'"HAD/-9!1B+H_0,"0RZF*=*K.:!+YI".GYS^YBDE'#9QH^,PN?27,?
M-:%.CHE_1N%IV2Z<K =%F;PF,T[X?^6*&]\Z>9 (]PI7*)_[XNHJORF)<%7I
M;>R3'_RP%[>6^H3-935K,N8LK9?.0RCRR.]Z>3^@MK%P+=Z:#M),]M+)V]'P
MUT;\-N31B-^AU-XX)6C?GW* [>/3.(HD5;9TA KSA +0(J-:/^))B61+(&"$
M8!$6=S6D]ORG>S$)K>%$#2<:.UI68TBY3Y*\SSJ]R$C%B1ET/+K& B)4E)1L
M?)L+<'P7DY(:5M.PFK&C[8/"H[#6+H]$GG7C!&X-/$&6%EE@)JG.YKSX<=1A
M;P1H.ZI (_6P$)@+#UU3#-6DAOZ>_<@O)O4U[*EA3[.X1/M)G$D_TR5.F0RQ
M01 B%^@NI%QVB;7=P)@24)(D@AF0*[1@8+4W#L'6%$3HPIBX*":/6?\\5^@'
M P%GB^5-Z;DM1F>LAD"F?J+:!A<"OBC:X\1<SVYO91"(?E\*W GO7"29=]KR
M3&=N6\#O-JPNJO@[$V$GN)"^5#E/(X2/H0-<4933)_00_J8#!!-=ZZX .!$'
M. )_/[[C<CEJ@J9X@J\NCX]>;W@,LFU*^&/\4T,=4$6Z7;DP1>]D'@9>5]P4
M)?J>"(!/84T^E<M0'P(DUDZ>H?= U_5O>'\@-$6$A'J="^S()F7EFA:7&9,W
M MWV-]2F#6B5!"Z%'.%H^%T$;M#E_8BB1KFEX8 A+QA1@LY#/Q0^"OD@QS>$
MBI]@P U&HR!L$'91B$^\M4@#!$20^J%0/5C/ 9THS+\ ZZ0=&E@..*[LG:5+
MQN L4"%C!P^DE^;M5/Z5X\-@6M3'(?%\E?AY#VZ (:<;X]$'W@[#K<QP4"J'
M<,[00H^ ++2K&50!O5/ "CT05>C90(4<6)_Q #]S8ZQU5#,6* C61@6_KB&6
MQM::EZD,'Z@_Z45;(XPV1FZ['TS02*2RMIW3I,>^M:)H:W^F%^@)$A3:#Y-!
M96=:_;HT990 /+ZM#>^3OF;*H3[JCHZ9[MD-8DW*V\G#W-K=>#O_C9K(L+;?
MUC.L<]"'8N^+:,-).XW\#>]6$$Z+05(G0?E51; '<2;PP]:[=^\(Q48CYA@Y
M[3S)BFF4G.9W1,L&/EX#9E2#VI,[#T%Y:]%\\J3X/O5RA*P!<2MA7$!"('=A
M"/C24EEI;+OL(;L8FC%%P4%0H.A0@1()"'F2KZ@OX,-NXR0,C/*7<E9ARM[[
MC@ ;%?X.U+7*0'@#^\I1PH,83GCK$.2#+&!2/>-LT-<J1!RM![*'?^G4:!1Y
MR +@Y6<@\(U:H4B^=6789TRBB'00,*]#26'[2F(U2L06+ 9\QY@\+;T&F>K!
MQL,L^WV0OJ"^J"C5B=DW2M>34&V(':@IC2M&6DR/)+#&5T7'(BDYOD1BDU1X
M(@,]#Y'#Y(F2D*^;9U:>Q*8^XBG%M["K6E.G.>C$<E"-UJ\3$4A41%*PXUI>
M#W2YD*<7JK]R!>\%M<V/(YAXWFX#-=!R&EBP0 QX7YU-*C:%'P-OU^FBU4U!
M_</9 *()$'H2M)IN3*1"H)MX=A(I4IP5:3HZY-.F>0(U*5#E5*32KK0;GW).
M&'?918)*##837NU Q-#H\PPF"1NI(D3)PO'UXA#WCQ,[<KP]@ADPI)KN0>2]
M.OIV]!I> NI>1-?N?,9"H:*Y%0P(7D]+"H-H)[IJB(=6K)>A9;LDJ)M:%P_O
M.%I$<(BHE1L86UV&SO) 9^R!)HC!]EZ<9@8W"HN6UF&8:=XS8\%ZIRA%=*[T
MIPI16P]%FY8_0IV.PF1 PPGV+T:'$8P1:4M6*$NZQ\F.$9]"!R8"RP.>@AA>
M/!3EE*.3X@^$B'TD:)BG*,TCF=$>9,@"V(AT]Y" YV# AM5,JGD@TD'$K@P$
MH%P/8"6BE(. 9BO7!=!8H#.7O5=<6/&ZJ*R M^K?[$"$G\24_@RZ#UD2"5DJ
M6*41!>M,9WP0R/  ]@6:%!.D$Q[ *6@C[GNDN+$S[EW+.\[1XJ69_"[@.+0T
M !EH]QH&3G-.F)/99,,SKV4,A[@/UVN"QS60S&?3(5XVO&#XX##VD9W0#,P+
M<> $?=9!^PGU_*!$>A$JBZGF+#$BH)7RONF>3%PS+[,G[D9R,9T^H&"$%%1$
M4B.ER<$U/:1U//=P8F[UPK:QK83$-'0IB+\2ZU7P:D<F$('.PR(9)>#GX188
M]6QG T;RT1+#*'/]+DCP OT1CF);2LR)94Z*TD4&AB\&7+J-RPVD@$U?E(Q\
MSM+O,IZ=IE;D!$2_+0_Y PE$$%79>M[7OAVPK-":IS$8TF)^384#,BUQ%BN'
MW!VKL!04ECP%PIM#LSG)0 A%P_Q2>#>H88"8!2I@BH$SQ<AX,(@)V'BCM<?[
M$,/C8.3= _1NC%MU;W<V1^EC>S[W_$ZMY_-!V-% MP,/ZWV!/(J3Q+ %'97T
M-)YHTFN!\J USSQBZ0]DA!H/D%8O3DA=ZL/GB!M,"\M263MQE,0'.,T79+N>
M9D,0F$]1J$JKSBC8Z3A3ABU5#'E]%<:9JS/B44?+0&/0VGUH5GV>JUZL-Z@@
MH=1*7%===]>'U7A4DU%DMZ56SN%Y\B'5%B]I0PR4@;9)C.3['Y)F)$:TB4AF
MDBOT,+FMI%*APM])1.\A,)8O8NF5M2X\1(<&-D\Z$GK?06]@UPQHEV!5L75-
MC=X'"''<+.R4-&TX"5I&<6<]5)T2R]"TFV;K%KP,==A()G.+]LWB#WQ,7?XT
M\J0 *\Z&^%2D R8MU[*CQ Q@K>P8(=<1*$G#=ENK,-I:.O?>]3N1>0U,7M[Y
MLI]9D[>-_@&MU) /J66<4JTAJXR\&'@.\&*T_3B;-E0VVHL!1MKM0CW7(;,.
MK(8G>C'( =>G,,I8L9Z-D28E]6CCV\"H26.8@F#C, 5&AZXG3W0R"C+Z4O4S
MU@D,&RU\B]J63_.V=O\MK6W(CB VC,MFGR$6[$^3&L!_+%!B='#OU#JVOAK'
MUM&W(^]KR7=U[OJN+LEW]15]5QP8C0GLBW8\E?(G@WWU\5)"*C?^$!PP/>!:
MPC9D0%2Z7N1.L7U&UCW[$"G<"C/Y*6U0F!T6;#*V^!V(IT]W.4:>B>S20]"!
MP:#R!?,1#,!J*]*=7/"AE=,&*EQNG2XX+L$Z4IE$,6!/YBB!P&/K!7+9LE-;
M(NB\5H0($-[7?FF&'9K">[6TI&D]7W<P*70CH,?:\08Q]B1\9<IR\8^^$0@<
M_S#/P&LY0 ]&&VQ8@E'G'(RU!/C(W[;W=S>VC$L0;X9COH?;\;?=O8.-MSS)
M\L^USXYD1D&9GGGP[O[&7NUS]W=&/799=^LLMTYUQF0P2\S5B\6B.(Y+/!*@
M*&&=A6KG&<MZY@!DD#G.&Z\-SVUY[206, [S*Q]Z&3'EZQ@#%8SA%8@56#Z9
M]M29V-$M.C4[B,K%>AI2#3,.';ZH\]_C6PQE"KK3\3!K?FD=T@,I$MMK1*&7
MWV@M<>?>7J1G<AG=+POO>=HJ/$+%:.G)\QG]L_C %B_[#Q4'&_1B5KCY=B'2
M11LR6B(R*H>7373YU9?+B]=:-%#H;Y2RAH:(9>F4G@#2+" +"![J8S0-O;@D
MZ"I"@?O:EZBX+ ]8O.\V-/W\5+)<-.TD #CQ)P_3#V0,!G27([4#[]7EE]>8
MAA=J!PCH+Q0^Q8 XW@&_7[YFY26@ML\ZBV#HNL]?Z<*LFU #+<K,+C G\ B<
M $E_@7\X28=34'26SBOSVVM#\B95P!RKD4_5.<#8FTIR6.0P['<%]WS[S7ME
M/YE'[S6GZ?GI<[E.$QP5$!"HG!O&73;$@:KVM<4"IR+S1E[U%FR1.",_'%OX
MM8)#BXNRQ/%%GWU?#GC=D#.E)#X:.G]^REDN.C^/P\'ODGU67_,P4QY^.LFY
M N+K[R>O>6,L,=<0L=6,^%*RBJTWRZ1;&/&$:7)HC(\AU=D<[O?/$U[\;/Z]
M)IN_\6<T['=UV>^P?5BD1W->(Y6M88U;K//71F5O%]EKFE<WRL#S[^]R4>.H
MG'&KB [&F647A^>GG[VO):+\#:[NM[PO7XZ\5_3[:TN=BU/IW=#H$M&HU3S+
M3K22K80Y2Y2AGG %@<FC#.6=23J;1,:S\="718H%P<R%5HY$TH:E_ZQ+KKZ@
M7NU=#B*,R*OT0YKW1[ !'#Q:O>M=2;KXUC8H;\7S40U]=?7U]8<W\(B/WJO/
M7RX-]WEG[)A.GE!Y=[T]XTUIRC"B24,CCT<C 8L3V+H#.M)Z#VUEAHRP@HOJ
MR(&4- 2W+2;'4^YT-+&A8G)E=H1N<M(6_L]U6:XO-'4Y5"")1?SNDS'W@ULY
ML6:F$4B)Q+8WZ9D:1 '6D2\!0\2[$6%.V=_E6BN;584I)$B&.FU!IZW82B9=
M%L'8 !O/:D#/%9/B0_OCJ6F5/GWY[>,/OF:DBDJ$R1O' ^9QJJEJNA<J2_ /
MJ5.()I>VF0))*G+C\D?,FX!OA%OP:,@3G?%%TA%5Z:'3GD^H4]Y0JL+YBC59
M-F-QXI@P2[#:F@B++!*)A;2VAC<.$#4CD5B_*3G+S$U[II?;7B(,8\(5;!$7
M)!>/['<'*95ANB6DE$S$;Z'P1M^-=9BR#KA'EP^TS$I)9 0Z/3)QLE0WO*-*
M@;%^73_$M$,8BR+^["5Q*,UZUU0-&SG6TJF+IC1XFLTV,"D.TDYF:J2=&A;%
M/)0DIPM$HNNM-)ODL X:L"8?4H18?"DP_+2\:6?'5&XZS?J[M;F%<I'F("Q@
M:RZ_T!(93ZS.=3*41TT!PX%5/C@Y,(GO5*]$D9:\;<*M(+)I@>3(]($J7X,9
ML0."@KE74\/R)N-1L) W&D*)<J<.4QIRL>&MNDRIDC+?<HN76Z8!V=@5O&QY
M&(WDB[_^?E)=1;-Z12$CQ0VILL24R5>K'*0BU9#-83RAG.BU@9A$,%\L;5_'
MRJ"I3G@%%R#)L4I0)Q@CL[$9S4Z6<N#E*:>YC%\O)O(Q1=_W/6)/(D,O=?;Y
M=#)T)K@-547<F/#T!V>@FK,3E&KFK6PBC="4,X_-+C$@"UXOMSG\4Q;/ ^5J
M8(:62W%N8>RP\[!:P5RMQ29-67"^P*ULK[=UO8JK/^-APOI[BP]1S G4WH3@
M([LL A(^?E2"/5$8<94M BFT/%,I;"11N9)#BHCU_3;E![@S:EEU?+C".YU[
MB?<3J'?##_J'1$P&S8]U0-F6=NAD_,=+)'T0*[B,^U@XK@@(P+LJ8NAT&"X(
M_"3UKHK.N&@RLM0T)2M'L(_P"!GY))._P ;257-G*6;>C\5+D">65%>L<>1
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
MS4KNA#7%?%8$-P6%F3Q$->TE$.9(!>CZCF.=>T:XM22.75!AYEXF*TWW<>C
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
MC%*_!.>R%YAE+80:XY(QEA"8S1$SNY,ZN0>='"$,@O4#[6T:12*"\B2 BX9
M_"'V8 M4WG,(PB!S4\BRI?DH#H/@)O%RP6GXV$ TU5BQ0<Q5?(H5(<Q)+^=S
M@+9.6#[,.,F-E:O0, 6L9\NFRTR:'TS$@U242SL/Z_:^9#FX=#J+RZ]=YV<A
MXU"BJ2+7%7-E@'E9<ZQ2=EF7@CB4/5.$.%LE9M75',!)5^F8M'-3WX>^==.?
M% DXZ\8N:EL]Z.H?MM)"5O0BUI'9GC&,%SOUIN^=DLG"7=#"^M@XISP<@]FJ
M>2LI;(CD-71!JRB(0"DE$U<\8,Z29JKU6>U, :9P! VQ3-H""1V-2XNT#/+#
MB@RSN;+;V'U3D?+-T]>/',Z&LJ^>70MY"LSR61/DBPU/,]'I4$5N@$V@18$#
M7C]_VME(9J99/6;'JC(XUN0$T&Y,R?F<\\,(B48]+ZHIC":@KR+*=!UCII"U
M_%S'P6'JDPH1[BHV@043GE;S$D[9M([.<SI9R(8&PZ>=D?K*:1NPK 6.,"61
M">U(DN5$.WT<HAB]1=>AK"[\H%S[3PX' E'<'I'9PB'F23DA"V3B'AEL-]-'
M=XD$QE4107)-OF&N2X&V1!!_PM)W3: NKAT#)[1-9(C3*^A+)].S2-1"JF8@
M EU^9.N!S$-C*D)X6._4^U!#1C[1-KE:?EW;7 ,^&(9]SAJQG],^A?'H\\B
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
M_"H-+C.% \M _!K*6JMV1^)^:-TS>PFU&=Q"!]['=(!PM%$!/<)+!*1P8<H
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
M(5A-5=@&](@?,9=V]:N;;QB<BZ\$P9(_)2@"[#0_-CA NFD[!V+GNK>E!\%
M9:=;G"WJ<Z\/UGYQ6S955[N)%CI@S!T6.'E.YQ1KW*-$,W+!G.QV8L0-TE!:
MMO+(A97XP-D;O([!Z4!S^H<H'T? 6"=O/R=J&;S0V?0"@HAM24I4AC"]"7$<
M.)MII>+3_VZE?;0!&/+0'7A'(\LE,JRSOP<F&G] _$76\QDT2O0]V4"_Y;7C
M7C8[RYV]#?JFZ0#-P"G49< (C4;J8YXYX<\@O'4$9F\0%P0HA8A:?%K@RQ/;
M2)-3,WG"V(*]D(+^7)TH#BB3^H;P4X@_R<7L#5PC0"68, %2X$KC?<PXB4+3
MPW#Z>O;>S-T(?I50:Y%U1"/UFQ+Z)BBH0HW=)1/D9N J)U2Q*$VQL8F ?YEQ
M$-C$M@(BHBGN]R[B?/LYHSE!22F.>JP5:N0F0F>G'BH(%J9P?CIAT;+'9<P(
M:#RLOD:]JH,OGAF!+!N:C)=:0@0;A8,+)XJ7K':RU'%=/> =&,T=W!,0!!,3
M>V@X6P@?_[IPOKLQ, -:F.C;ZS).= L:6MH/+VOPI35(3&/DW IR4-?EGBA0
MZ0O@I1,$H2..H"S!PBW?Q_8-"!\^S2:5!4PR$) 8>97FP 1 5['6@'N41%Z'
M=#(+YXNR,+A'>/B7626/DSL.LP.,PG-@4AYO[X^4-_QBSJ A2*GWBO@0/D31
M(P[VU^DDRX$!Q=9&H%U^A//*&I__U_+D%XQR$W@Q*P5ZJPP&!R%.D:;JM[G1
M572H]Y+B9R&ID/51FZ2G%C@H8T73(<@0\0G^87SX&M#=OKS%[3@"%R5<?/.X
M7+/GY"TOBDH%U0+_[IZ&IZ?T/V._7*)T=IO$A(* B?T9\703-AC^ GUR^FJ.
MKT'X4J>:PGDU\C&84C!?0M;V<>MH,+H]B57KW?!L>K]DX&LAQK?>D;BI6S?^
M7LZ(02@45'P!>$<4_+0B;"COU.A.]<2(I$I1W])*RV0<8O6P'<D6M"RZ=Q8%
M^R*XCB:H#/LE3*FZP2XM8%MSVUSA/&[Y EP;!NHS 4#J%E[D-7!M M#Y0N1M
M4)X3TY@!XR-@D$1DO5UGI>+^>O/H#^R"L*Q=*3.5DG"F-(&08E6H[R<,7(92
M/?BSRO)J?B0;WAZ(O1\(+^)6*/5)#'&L$!387.J4@HB&V,0#F5<I;=][3V.%
M(+J3I<T('+)I/*42D4N-F"M@V4[V2[EA0.K8HV<+%C0:E=@-&[W>U'G5NF_F
M$9A>.1L*#(B[4)/X<EE#M=6!X$ \&AS+U"U,W+?;NDE^<9OPT)ZZ>PTLD1;-
MSG@D)M6<\K+Y:B#0/S(+CBX[815"7NHQM:UNO5X\C?YI[T7G;-37*J'UK'P
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
M__WAAV^#*N6T0-!*EO-QE@1,VLGS=^]_^1?_/7T>P'T'MLF/:IR#S;*4F.&
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
MYJP# E2@/WXTW0T0SN+I0;!\ ?1^ 5<E-68!1C;0)B +J#*"I)=MY3!UL3N
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
M1&_AGO= ]!;NN?VT+<N]DR()!\CK"_6O*(G2B0H^S)0JB^!55$:W':Z#*^2
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
M2P.\!DFQ7P*'S6G6^(.4[DCW4(/1H8K2%6FP'G<I6\_<W7CO4.(0((Z*TF,
M)+&QU:)X3I)$<1\=XD>EID2[")2N+$*=#$T-^,!<UYW@A6^LX'-BJ.#QG^3Q
M&(DUAILZQ&DO]73LC:]IDBO4;O$O.NG!+]&8]3GD=%8 LO0JP]G1S$*>?+2
M]7^.<1^ ;A>]K\/@HOLUD>+\XFO].NG<R5(,.1X+^^E'?#9A!0L^[B@B8:DQ
M:G9DQ5G"F54?_%5:H&./56>DCF/:BXKZ6QHC7W] JQ0H_4,%BB3S]?\!^Z2H
MJ\>3&<H-K4634C3+E=)LD* :!HP-XI\$*]R+H@,%;'S>JGOAD$E&-@J='_+4
MR87#,X+;0[1OOIZ&H94J_J)HVJ1_PG#XTPO6Q)Q?W>"D+JN<1(>YW> 163VL
M+JNN9D0Q$N0%^TE@O2^2Q2RZ1)N9&6P8Z#/H$7+3$'PCP.._PEFABP YDPX8
M?.NBRUB9/8NF6(ONV#\@8K+:D3@[!7%3I70!\YKU8<BJL@##2V^8/]5H0D_A
M*0 Q[ _9PU/6DU/6&YA3YCE\G".'HR]!H2]0$ZYAY=Q^'C?(3N>6(^F;1FR2
M< ^P *RP3-\VFD\S4C:JE.4?'6[2E-"6\\7>K?P)*V,M 9ZY<?D\5U?(40<O
M)U"U3OD"HEBQWE*2BU_US@:=KK:F#.,#+;\:#,\[H]HW<-Y>56*[QT6 NGPV
M#5WQXS2MU,:_EL%?G8\Z_<97=8?#SF#U5:LK@!%!>/-PSJ'GX<]&:U8RNNA<
MK([.AP@C!]KZ@*\T<=@OT_@R=">P!V&")D*4QK# \=)9[<3O-,T<MTH?%H>?
M\8B(5DC/BRXQ%U]#3;1;>\#S25Y69*#+0B+C1D7/1D82D1T?8+@?+$.#HHLH
M&NQS<2XM\OI&CN9=@LD-IS\"?7M26@UP"E<_F.O$4OR=W)S-_G'6T9:>J)H"
M];,..E9AXR*T#U=GXBI(XL58$4*>#'+4*+PL+PFA3J[AN;J*9#WZNL;?P.[F
MU8+6EH ^=0)2<V[>(DPPSZ8J*3J\(XZGS%?<G#=:!G9==>0V5*EC1UZJD\ER
MDJ!*468\/%X$S@5&.AW0+27IC_:M.$;AF+ AS9X>OK3@W86C'+/1K$>&-:"1
M;,86GR1M>2X^2Y3J>&$ L[!.S\NC?\(*X)KXLU)FS0%>2J2DTSY[7L2:J3[&
M3Y(D6&1\Q?-X8Y6JR[C4X0&,!.@=NJ)59NN==C1QE:)I7Z#S"R]Z,4!$YI0*
M+J"2;[%Y]$>6BWL@8E*R*Y(B'*36H-W $MEW'/X^BQ/>:^-P0V:&%?%B\$ZV
MIX#WQ5F(>RSP.;+5QL@JUUD.LX<IY4!8^\\8)*$>BNTV.86\5?2BV\X!H?2P
MQ>BY<^L.1V/: :O,,SS?^$+X0L'FP;Y/;/P+/IS,T((JA%B;W@]L?XD^7C#$
M<'EBH#AMX HMD(TP(0N2YU!9YS1%>&HMY,RSYNS]30]#.AW*E(B%-7N>2N7&
MPD2]XZ"6'%AW=]'7H8)WZ+AY'0883 VZ+SJ;PTA\^FX)'#U2+.8 <@9Z;<[
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
M84CD2M66-M7UR\J4+Y,Q:3/)R$%&BA$Y)0H$\<++#M]WF25Q9G != )Z@A>
MN39QSH_LBWKX<_(.LYS(68S7-I^7X&/T^=#<%_XZA'5*7$= ()).-<NEFJ+T
M#!FV,224BL1S+?)S+-XS+!]4)RBF>53@TM2"(/1ZH<36D3& <,'+2N*._Y>-
M"]!8RN &!"HZ,:AR$^1M$MVL"9HX@"R"N++0ZY+3)1657&3\F?C-B5 03D,'
MM)>Y<IX,C4U#I81*.V-%_?RM\Z$#%,J!SZD 50]+]1[]X=?XNU[W:QWV&,-%
MI4,IYR$/)SD!BBNOKY4W-Q.-0LM8_5GAR9&)FNCEFJ=Q+\WC8[7,T&'!81<)
MC)K8@]DM]X#B0$#MNYS(]4[7P_,/#UK_\#X%+18%W@F0^(F4!_I@Q'([5G-4
M1S"G<#.4 HL<<>Y*238>:WL1HU(PC04IZ"/]G <CV HR&M,,85K0(F852!Y
M6:$+I.49"HMZX=K-9_^A;)M;L-,?Z"U,^]N*N>0T7\8I'9\MJ[O6@L];$=6(
M1[^Q)NRA6ZGH/-W>3IK8P)2!KND_GW4'=2+VNEL*X4:2;<$DZX4ZR)-_P_49
M_(!P3$:(/+VF/W=_<K#U!7?W>0 5]<-(P:=&@O[ADJ ]->VI^0N>FMWT$CN&
M"U *TZ6CF4N7TS# __NV_A,]=513_&]H4M\%A%SX$#+"13?\ BDAZIAITM9M
M4J@><7_.ZMMS?I2[\Y(,B /:E_;</.W]:<_-P^Y+[1*TENC_<E[0L_W<B_?O
MM_F-5$NPXS:KBBB=%M\^L [Y5V-+3,9OA<43W)7S ]J5WHI_ZRAWY:MV2Y[:
MEGQ]0%O2RJYV5_:Y*Z,#VI6_B/AJ;Y0GMR6[N%&.T4_YD"[TPYGM_?SDAS/;
M=C_;_6SW\^G.MMW/=C_;_7RZLVWW<^_[^45*]^D ].W^^=,+@IC>%CO.G&G*
M!OKJRY)A*(EQNY$'P_-PU#M_F&D^98Z_(WVZIZ>=TX>ASM='S$6#83B\.&NY
MJ.6B>W!1MQ]V^[V6B=8LJ=>Y:%FH%42M('IT+NH/!N'@XH'HU'+17Y2+NJ?=
ML'O:RJ*U]]E%I_](Q'D*89_[6Z UT.G=6Z*/%SR\2XG'UJSUB//N]?KAH+^%
MN;Q5P/)I'/0];_.=)<@CSGMPWAFU>WSD1_GT++SHMMM\[$?YK#-H]_BXCW+W
M+!SVNNTN'_=)/M_&YFRW^) /<GLG_R5.<GLG'_]1[@Y/P[-!:RD?^U'NMY;R
ML1_EX5G8.]LB]MCN\B&?Y/YHMY?R<62)_>2TJWJB($OW"&'U^L.PUP9"UR[I
M_V?OVYO<-G)]OPK+Q]ZU;]&*2.J9.*YR;"?K/7'L:R<W=?XZQ9%:,]Q0I):D
M9CS[Z2^ [B:;%"EQ-'J05%?MQC,<LA]H  V@T3\,K:,=836$.(]BGHDY&A\H
M9Z6I]'D,\SB]CA\./X)YGCNF,SD0[[QH'F4>P3;/K3K[=$OIHM6-5C?G8!YK
MZIB3@<X]K62>D39TMB2=FA.G1A2DS>1Y3)Z7TZMQ-G?!>5Z;U4B_;XDKN0N@
MOVGC/QS_7\[,]9I?WLSUFE_>S/6:7][,]9I?WLSUFI]PYETXY,I[8M:$&OVX
M67J[)3[+ SS7L6U.QQT/FCWF&N#P4#>2FTJ<1_#.:&(.G8['S!['.P<ZQ6@J
M<1X34#0' \TZE9+5&W:;-EKK:*US!MX9CLS)4%L[E;RC]<X6XECF:*R/P"J/
MP/I'XYTN'(&5>IA?6,S<"$NY@X,Y9[?,#U=+%G0PR]*QS=%4YQY4>N%'.SYN
M"&T>D_0T,<=.Q[>E1[D*VMRKU#KF=*AW[$J#QNEU'!15:QVM=<[ .HXY'.D+
M)=6LH[5.97S"M,9:Z50*EGTH2,;+.<3\A04L<GWR,-WYT@N\.,%,S%N-M=>
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
MQC5.C!M8?UQ>G#XP,.>3A/$5P<%P:8L3(U@3-A8,)1V!#Z.+\;-XO4+#0I!
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
M'Y);:/,-;^P+!;FPSY]A2$"CE_]-,^ '"UAC%4\)Y_]:ISNKV)9)$ -RHHP
M9X,GA+A14BA#_4"(.O]P#OM^P,!CBS&8"K*T0I<4U,#"]2)1.S6;BTHH*6X+
M+Y[!GP0U8]D EE'&I<VH3,L2WX1K'Y6)@15N^6%+\*]UP&.V%!@C"T>N>M8W
M?2X.!W?1N5 #,P@Q=KP?]7M&%NF2[(93=X-[.3<#V(3.RR4A/>*IN3?C3@O7
MC]F7QF+M^R_OL10A5U-F.F(82Q)&F-*<?I+2$X@&0E*CLRQ*$XMP"_J)1$XO
MH($OULDZDDIRNW(\5&WG75D)A^F%AX>[6?A39KB,3G+O."WCX?2+]!F.:UJF
M!\SK 2D-CEW4XW<P<9GQ$?YT$_,BH;NJ?#R,KJ>Y*;V=30Y0.$TMF(:Y'3,&
MUD1\@WJ)XH&@$,5O2RI3OK6HVF,XT]X0W-/SY0EJS;QCLQX6J25SY@$<>8A*
M0'IY=B[/5[:"Y>GKY6GF\OQS'>CE:>[R?'0CK=R:NSSJWK.SGK)>GG/N/7IY
M&K<\ZMZCEZ=QRZ/N/:=8GB;X?^T($SQV<9^G4=X#.I^G 2HXMON.%>/5 .K7
M+&Q*YV_+5<1N6!!C+%$<8.&9PO>'#84<],OALX>=8CQ\%$ T^7%EX5U- $T
M30!- $T 38 +(T 3#-N3%) ^#@!9B?F[ U6AN-0/P=>V+'-2!\+MD# '[276
MV!P,6PNY?6IB#<UI>VN2GII8#G"6)E9-8MGF>*1U5FTQ'#BMK?UT8F+UI^9(
MBV%=8HW-\>!8NV$WPFL%O(M+*R&P-W<=<=S@:SA6C;H@&K.XU:L\-B=URNWJ
M56[U*@_-T3[@O7J56[7* W,XU55?NK[*CCFR=,&([J]RW];E?;J^RGUSH*VO
MKJ_R8 HV]DEEN1LG2RKP7TMR:!Y2S79D#L<=+_;[&/),P<SI>+W?1Y!GU#=M
M1Y.GDGLFYF34VF#^*83+:N_Y[/&%RS8'_1I@]Q=*'N >V]+DJ23/V)SVC[6Q
M=^.X)\.&$%!\\?<M,? .GQW6U"_US/7,]<S;,GX]<SWS1L^\"R&IO(5&")A/
M"I#HA'S>$EOF(3E,8W-H:7]Z"WE&_1IG<I=*'G 8)SK<4$F>B3D<US@?N%3R
M@.Z9Z%!G)7E&YL32YPC;N&>HA6L+]PS'QTKD[D*PJM3F^U)1?Z1[AM_$M(8U
MDH O5'HFIC-L[?V:4_!.>V\?G8 Z?7V(4CDEM/FTOUE-G<%0FWS5U.FW]S[M
M\0^WS=&H$9?1VA3D^Z6RF)B^JG;^!$O+ CNL!D_K--I6K[)M.G5L KW*K5YE
MQ[3[.B6^ZZMLFQ-;7U7K^BH[YL315]6ZO\I]?;FX\ZMLFZ.!MKZZO\K308VH
MY)FNJK7BC(AJKCUY_7N8N+Y2@UUF.NN P?G9W!F;_3J7R[0R:_4J3TSGM,I,
MK_+I5WG0-T<CO<H=7V5G:@XL'3#H_BKW^]K)Z/HJCTVG3LZ97N66K[)MZT!^
MUU=Y9%JG/93K0H[!D]>B1M0B"I<R1A &7;PX-#6'(YV,4S4EVS+ML<X"W,8]
MFCS;R#,8Z#S 2N'J:Y2;;>09FGU'Y_9O4<W3B;[3N84\8UNCW&Q%N4EN6&1X
MW-)[+LY_7IA&P$Y_44B[+AOC?GY<]_2%7MZS+J]=1SOIX$.;E]@R+5NG?7=\
MD6M!#>HE;O,26Z8ST96&.K[(SE0?['5\B2=U8$_U$K=YB:TZD/7ZL*?TL.>*
M+<*(R8! XG[K)%+<U'0<';+?$C8;]G70=4O(?C35)QI;A&LTTMRS3;AT48QM
M!SX#6W-/)7EL<URG?.*EDL<RI_UC"5<W#GP^1^&M%WMA *U'Y[7SM.NR>5'
MM :ZHF+G%WFLT2.ZO\C#.@!?>I';O<C64$>,.[[(MFGK1>[Z(@_,09U$.KW(
M+5_DTQX-Z$4^PQFN.3DMSF(WSG]^8XF(!M2, Q0)Z)01\!&<?3B><2IY9AZN
MKWP&HWS:-#ZO,69K:%IU:H[46JC'J#/-">?FA%&]J+#FA O@!&ND=8+F!-P=
MAM8>"8N:$SK'"5C93NL$S0F8N3)U]CA>TIS0-4ZP)J9C[1'OTIS004[HUZF>
M=CA.:$(>19-S7]HS6CU//4\]S^:.5L]3S_-$\^S:(8BQ8C"+&S=BW[?D_@O:
M7&UB23US/7,]<SUS/7,]\[/.O GQB*,4A/W)C;V9SN9H1QRNWQOJR+SF ^"#
M?0J%:#[H(!_LD72N^:![?##<(V59\T'W^&"LLWDT'R ?:#M1\P':!WI?T'R
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
MQDO#[@TGSPYQA_L<.$HG(=/0!C(YO?Y8DVD;F>P!<9,S.A:9V@O2]%X&I^@
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
M\K8OV[CZP2>Z&5_@SV60 1@;9NYA%8AUNKTJ@08T-[C Q)LP_+"JF^$GJF'
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
M]R\6\,*)=UB4,,5_0L) /R:J2V5P\DY*^>B(84RAZ^A>*2/L/B9'%J=#*V\
M-6&@ZO?-50NS<BOW8I7/#>?-4VUY2F2:95L[ZY9.0]2<V_X/CQA]12)NR1E7
M:5:HDH2[XXALV^?VH[Z>3)[E#]0.LI@ERR@QA_C%RR\*'ET*;U+X(]XPPO@)
M]9F[\'K\T2I,5WE,O-<RGX;2[U@,0K]2C2B^M6<D;#^CR?KDRA,Z,%5^Y\>E
M3F\\S)YAF?-RPKV)2?NM*<X$VIZ?F-NDI9W:&U8NEI?5AJ"0%996@KUV]M?+
M9!T1-'@2)O<K"N1A("QX.6=+*M>4(O)QS2ZP#07N.&YB2_=?823"%0641UG9
M0@D3"I/!4^(,*5B@25NK-V/*/4RU)SD5!24P5E$"MV <JI0 6V;&!#YL)#Q!
M :9(KL(V+$49!Y!M"<,_3G$C3PB;*"@CE967JW^2PA]2)R6XBGP_K0!6E&W_
M3$;9QIJFC9N*4X6DY@ZN%ZS6B:C\1J@*' 0;N>R:0E-)F.+@RBD;" (8XQB%
MJE#I$E[YB-[ +^>G?*/<E*>)TOWY2"$>&3C0#AYY"QA@X'*$ !:^X;S81N]0
M"1GGR[8H.^O/Y3^(W(K)Q>56Y :P2]$_T+_2UN$I-FV*#7#0A6J=1%BNBB^6
M53'D9\/L%L-#);4+,Q!B5<-CE$VH"[YGY)587%]QI3"CKD&@"P+;=Q4A[L,6
M=:EN@3G5FH$FHT/H^O>B5A_7P5(9<M6H:CI1\":=ECSJ)=U([P<,-OD8#[X(
MN$:HZ.PEOH6L1'Q5;I+9P0*Q?=G63=&]+#27BXO!"!?D%:*<D8,<,_7=B&6Z
M/]MVLDYYB%6-H<HX!=I$ZYC#P&=4R$* "AB[."SO'=;8/JO4;'S>&N_A'^$=
M1E??S.?BS#7S'Y"E,6I,*D$[$UN<B3^9."Z19]9HR*+*HSB5!+#BM 7_ +$N
MR,KEI74H))ZA#TD0S(#7$)!I 0I\_\8A(YTKQ#S@+?6UJL-S0-V><OB0B-)?
M^3[*))]E];KDF BR%>&:N1<DT56$BMYI.=(A"6FZPJOK.*L_H2ICL]!%M69+
M?0BI5P-^6DO9,.L(*VH(]05#<2L[%-I5C0\TF E;,DQ,YL0CKE)&+BMAH'A"
M=VG!>R9#XL7S-\G:IEHR)$:WER.^<-O 1;90&3G.(<UQ%%P\;9?EV(-'>IEF
M\0QLP\81G\CJM=P7YD;%C!]K1N'Z^D:<%RI"D$U&")(1WW@K'D]7RB0)#YT%
M<\G[Q8C!QA@S\9*ZJ%0S*#9.3@J5^(,H.1%Y,2^HHE@#XETSU44BK4!:;;)K
MLHR\I0R?9 6GMQJJZ0CP<]++W#XD,8\W3G-Y&=(T:R)F5-#@EB=3"NNOR"@9
MEI(LI$V,E2%\J4>F! RY4HJG:2.HN1,Z6:3\+<<S)=[]&BZ2.S3$WR(T83X4
MWAW2MM=@UN'V0X7;#7O/./LB]"F1&DLC.</^RT'?3#-<7_X!'JV4H32K-U>B
M@;^(-7)!7_M@>0.1Q0>]G"<]4\3RJ37*ZE91GK?L$.,>\GN!)SK/BKE4E/,U
MLFK)35ZVEMB4:=!*7;'R!1)K3E8;7ZQB+&N>P23/V;5(7TMS#7@9')&=X-6)
MDMRA6:IVZ_)V9"YD=N<#1[/DAP793+BEEY5CPB3P@*H#8G89_RAUKKRLGFV,
M\7@R14KG3G=#9+WO^Y4P6J@UGG#-;YX7AE&1@:AD@98$_;2ATYC-2T=[.A#M
MV;;S"&]Q_SC/G&%(1W$P^2'F<30#T24]/2<\=[TGGB+.4EB\[>;,H>(NBOL]
M#V=4/,B5%593CUI-*A?[,Z4QI@-&5JI@MEW3E!4E-N\NE.U::06(%$*ZM(\-
M@>&C)J)D5Y=*)$8&="2%-N,YH!7FO!*>B%&).AJ8OT&DQ;,IC\E3%P(7AW6*
MPR!@?B$C/JOXD%&66Q^W'C JMN#>@VKP>4AT(\@A+Y#)MW@+BKWUJ'/]RTD1
MU@/X+O[.>!\%H)K^!IS^@_$_('G7QJ^_?KYDHLC;YYC]Q>;RWO2&LB'=BP5P
M*;\*'EH7?:GAHP>:SD6U#HW0+W&(T-5G&]#&9=;FK$Y3LJ/$3 Y @33/:JKS
MK(Z99W5"UA7\L@F48Q> <NS# .6<Z\*T.L]MU>DTQ$XK]J$\Q$X1;($[VQGH
MSA=Y[HIK?O:QGWT 1>"=(F-M!CY.B93!>Q_\<!; # XA].GKIW2X)< X.X"'
M9%E!B7%2CH:3E=X]))$WAG_16J(1N#,/1;'J,&Z5O+>L86DT+,W1KX5ON/+*
MK1ZZ5B1@9GQYFXAK[=P9P4-T,R^K1M!CFTG;&Z<.]1M.CQ2\[#IQ"I'WL>1
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
MZU$#.;9(5PQNFU@?/^LB99Y?D7>^X)0_+?Z(N;V:VY(L<W!F^+!NL%EC!M)
M?M\S<:->QFYM5F]$YN[N-=5>V4.#BW[JFYTGW7"OV@\Z(?HH"=&#@^>'E(>
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
MTTB.5 3UV>\]VUW.DPVFAON.8NAV<]]]8XNE;\X 30'FO&:+39/GKC&-M)E
M E12*3$354?-)<BRKEQ01*'MYP71I0/GAD-]U%+N1H%X)%24@5)")2J-F7M1
M -9V9.7"Y@CZ"D*_74Z@1%TA<[N+P:"CG%E*@J"B()3"<U ]=]SN$M#5AR/E
MTIM(!A3T\K7+H3FH.6IN:XE8YYHCSYVZ3:JV/VP7J="LJN_IO;9R!!ZO]W?
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
MZ_Z3/ ?]L*MWNZU&/2"Y\D$D()7Y1@"DD[?O#,=P3:89H?:>F=PAKG7;,#>
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
MBO8K%CKPP^>O#F:4N!:>HA=H;!0JWIXRBC?JO\[=((MYY)QS&%AZ_"@+)WO
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
M)O.2F.RXM6RYMY6XQZ;9'CD)@O;)F,"#P"*\C!G_:N_)%R^$IT)G8'FX;]O
MK> C[ RN"3I7BTLN!O7VD>.U_D5::Y8;JA4H\,+FH_'FU8)!<7_+Q4=T4GPO
MDIXWF1]LYY[+GE\^&#[F0P9?F?]]!M;)'?S^G>.9/U^),U6[U^UUA_ S!H>6
M!6H9?\E>-60?QA#>4ZGWA$Z'F80)Z?X.O0M1'N&@IL'XT<J<@TW(YZ%2^,MM
M>T_\UVV OS,"P)8+<V6+N0++4PMPDM#:@W<62U0B$P..MYKG<B-;K >\!I/:
MAVU2@R,ULO?#QF"*6>8/"#1O&08AV+V P4OMO>WP1U7?EH[/AYT;'S-YYH])
M?H7'8;2E01_*7X8S(UP[)*0>!^]:_"$+#S<]FY].+!R-_<!6>L%_"\>4)?88
M#'XXGRS-O&[$;<?G'WA2W 6?+9:^.>,CF/K>7#3O>R9C5B#>P4;$\6"ZN7.B
ME4OMZ^8/TS,)1L-/G#M4D/*5MQ '#QR,Q\.Y^/L78I&,1\.'#MW[AHMK!*;-
MRA=P41D_U^!YS#'DDV33_$P7XB]ATYK &.)!BR?AN-A\X7C/+.I/]!7^L$I.
M$5N>JN7UF1!J)44;#Y>B1!*"6%3.6<"THP' I]8T''/IB+4!%*P(YH1K!EPM
M2TJN$%4C#'U[LA3/@W5+"\#,<V#=7JS(U'0AKWR/$/_]@?Z@\1;^(($<M4N=
M'6QZ?#=GH/H<=CM=-4+XCG/E6G(_X&>*?,.DDVN85%8$:JT$%%^HS,JN3?6^
M:T8EH$IN2+T24)LK*:A=A^"<:T"=2!I I+/Z'87*/>D:'+T9V%;2C'"ME/UO
MS&$>0RH)=4+%3)0H":72SD20.HD23@2I4X+4R91<VL/LV(0O>G_S^Q1OOHL!
MF/C@SS2R?)M(O*Y2">?]6B/! 2 "'Y^\(,BPUW7U09^*@1".]\9QK='7&W$\
M'.C]IM.&"<?'C.,J(YZWQW&_K0^'1X%CLIM5?)_LYEWL9A&5<1%'/UQ$T0_K
MP0Z_G85EO76;BBGO//+00F.:7Y%NJ;YOOGQ<U=__DH"Y$GCYPN--;J?\J<%M
M@AH.L%B_MUZ][0STT6"@CT=D<RO>IEH('^2Q51::V0TB?#SJZ(-VCQ"N=IN*
M(3R/B++0 &\0X8/>$!!^%%2KQW>MWJ1%^&$Z96:(87I)_"8SE[X=VBQXP08\
MH3"?C=DPIS?&TVN(5NT8&SK552./Q(',41^RD?EKF0)GX9@HFQBO=MNW#&*\
MP7:$K^69R#>8WX.9C(8C\KJ$<7R52DVX\Z)H<V9]-9[QRU>^;[CW(@,R;3>W
MX5C8ZRK&)T5\DR16VW&[JBI6G?% [[2(QI7$2C&QVH[&556Q:H^'>F_0<&WE
M^AA;S]SO$V5-*WH7F$LOIH)FV\PN=RRJ;2]^O,'.T7O5.*LE;-=\UAG[8*BW
M>F.]US3[]/I** -J93I"TL6E:^>8PD:EJS,<Z:-VPYRN)%TD75M*U\Z1C@U*
MUT ?]?IZ:]BP'7Z =)'_>]=,EC76HJVI4)J_Q:'K(FJ(5NW$&CK552,7T8%7
MLSPT[#SN7_=W$2N8"52&>WNX7?WX;,)01,ZUOS&=2_.5,9DONPU7_:6[()*<
M0LG9KN1\ Y(S:CAFG22')*=0<K:K4E^[Y+0OQ\<K.>2@.= *EHZ\,[X4K;2"
M6..::B\O\W#G6,5*5)7$YHJ!K%KRI3I(5J8C)%+K(K5SG&)](C4ZW@L:$JDS
M%JF=8Q3K$BDPJ8\W7N?-#A4M5VKU*$?4_W(UNKK[1@46MB^PH%BGMBB-U12:
MFBB<]6X9V"X+@FMO/K%= W7<>SLP'2]8;JJBU3V-*EK]E2I:T4QHJ:E0N'Q<
MW2"]W;><K/;%>Y#U#L <P!U=U_C4IRM"&>9_ES:6N/UV]?7F/>[JVI^+C(:\
M\$2P%-H7W5;ZSVA-K_#Q :^&=?5D!Q??C(5M?>:]VH].;K"%'&%M0ANT-W]Q
MYQMN,&58QK<=&QD#,#(ZG<MU$@L-EMB!/W0<96 'O*RN-RV>D_R@LOKFI+\Z
M)S*]([CSKL3R1DVSX L+;Z?71C"3GUB9.6FW+M=C.:,Y ;AI)OQ2^P7+.&%-
M+WP1 >BU$!Y,S2V<K#RZJD8G:P< ?8"^A,\WR G.@C"XX478KEP+_Y!5?U)S
M>;ENQ*:G,LS4I<:-XO<@4R9-U&[V%K(?O(R:D%)>S@YZ<>_S\IOPI\<?E_UN
MJ@%EJI@IIEO%=-J!9O#6_F[,%\$,T!R5EEO"0LS!]O?#0 N6BX5C8V#>@F&M
M4_M_J!M@(0$4YL^+<.EC6!X#T9BST'"TJ3$!TX O!T]8O_YR#5TT9[;+:Q7^
M"PMK\WKB"<+U3+$^;PJH"S0;VA8=P5>&*TKDI1J%&5I. 6!+'SL$L_-@FTQ[
MG-EP'&1/"UEA$!^3Z0*([\*8V ZG=[ELI'+JL<#D+KM,VLR091@-T\2B,EA"
M$3;.I*)@^LN AIEG\;J0XML2-OC*MWA]15YD_>K[]9X;_:C5OQ0V%:_'9]A^
M4O&=%^%+JS- LVWQ.CD,:R*%N;\P8*L( ZG1(PL!0>S8,63P2V#^6CI"S9QI
MH!*7CE!'VKWG68^@ZE[:.D<KU^%V,UO '[*[:?T]'E^NI^M'^ENHYGB4"Q\>
M[0,RQ8SYS#%$F63Q.GAV&6 .WA%SA "(2VZFH!+OH.(/4$L6UO8,;73L(,!"
MXPFK4RZ\ )/R'@!LQHLGD7WW5C%#"]^9_);S_6C&/CR!,N0E]I[>QWW]"CWQ
MK%>9A>YD%N<B8.9OUM)_9H8/6V5_]0!V@1]@%#0\I[J]:T,9W;0&@*_T=W:*
MU-.C9%HR%=W?_?/5JF>,UXU?=VEE2Q.VL/JZ=%1E'OCEQ^?"$C"95DJ\YI4N
MM+TT(N8NHSZ4?K>X6'S:;;0P[F&?]YGQ\\*8ANCK,9Q'XSE8]?UDQA>YECH[
MN99B1]'*U/[]_;?<J14[4:KA9#H,;>:C;/\)+,17)>^-L-'Q- -0VM>H1G@5
M=V-]%M-_YN_/+TG CKMR_87=TX5_OOH>V->?C D\Z,8U+^MU3:1[@DX7W%9P
M>7C\##?_/\*IQ46+5/L>PAMSL6Z-ND^V\/65W[R"1B,_7\AM?>[YH?T_+F!P
M8#/<>[ZMIRVM1SA6"CL,C*WX")>V)7'!N1W&OVHQ6&Q>V!HK>LMFUI/XEP&;
M+ATPW:8HVG*1*K4:(KLJ\C$ 0NV0?;(?F'43#_V*CWPE0>X'[^LGZ&K6?.@5
MF _]RS7[0<-/ F&E16<GC9ME>#B>V8M RTQV6&RE]@^S4O]=,/YWSY^-_WC^
M-6X)_'?7LKO?TKVMVN'QC9G>O0MXMVX0P_;4-N(>1HMXY5J?$NO_2AC_R7""
MM/$\O%P/,XE]'^)L[0D/R&>TAR^$Q:A]@%-)$&C1%:'V61R=$/"R@B>*$/X8
M;=]J,%S>8F5G??-C-V%^4(#Y0>*[S,-\Z!L6XQW8#>C#&H%^AWW\@ET\-G2W
M+]<C/O+1#;BPV?0"#WL7W[QGPPF?U0?U^L(<BN11 9([Q4B&M\&8GB]8*'9
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
M<;651\__B71C)@P=G:-)22SMI1G.*ZZ2$[%1<W6[E-#\2XSM6@PM*=&V=?W
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
M]!A+L:H (>OPBAPF[@JZ.:,+40DV-*FWK7[ Z;;H3$],BT[L6\S__-1";G0
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
M3QYR*O'GE&RMO4-T&PN6;;CA2727DJ4+G.W"BN!3G[H+TZ8&G*T'_P8HP>7
M7]S/@-^=PL]>?:9/U"+%RGYU6+6OURVR<4&BI.D&K"+JP0[LNJ0N7YHXQK]Y
M88$'? YO !ZY?''P.U>\3)R49\)AZVYRTPY:O1:N_FCEVX?"PN5)@N(<)R>1
M/P -W#B+I6Z_P.>>SP_! =) ^M!M>'.!M.R^$(O5)$0:U>'X=!>.&(X:"-?D
M5#_7/91\G@GH T>+U!6L*AJ&OX;A&?$81)\ &Q& I E-#&+:(.Q L-$6P:F9
M]A-,BK':TK%,8#7=<);X\\D+&R&:.SR593OAI'V8H_62^"T.BU.V0%PVR!S(
M!CYVV2R$#(JTZ\.G. ?'$RW#,+VEI;_$R\"?X71<Z@66CXRQT*>N _JM[2S,
M*9F!V'5<OD_XW7 ;3/@I?->F9KCA-)HFOLUWT,!M1AX*9_F"M,T^,STOH"Z0
M%?;?^ T>/C'93V%/ESJL']:-R^,[&6V4":J);0 114>&3PI_V<"?SD$5YX]/
M[!^\OPCU#?9#U-R?PAG/ LM"#K89A"A&$S/:#381X,B)&B.C$($KF2 3!:Z+
M% _'##*\&;T$-N-2(E@Z-MOYB")6)! ?DH'21_<B,F(O^=] S[,H91 V!CY@
M1WR\<]O0VB&Y2?"5_MK1L9F 4D=_3JW H.^JG%6\->2M83Y%_2#N?G__]ZN,
MT=)>;P.1U(##5A'PUJIA0^J)7W]\R:UQFAJFQ*A*I&T7$K&#/I.QL98.*XI?
MK'3=)>A*S0D Z9]-?>:C@JI;S_J+MZZPII88Z</:7OIPK-VN;^\?'[X+MY>S
M;6+DQ);H9.ZBQ?87WYE>E8PD('\9_P-GWJ#-:&-^I"[:R?#O#5BVC0WV1+ 4
MA!X=QI.%;>]<!T3-9WT"#_ID3UNK&K6GG,57IJ7"1.!06%";J0IQHC6YCU'S
M://+PE,\P=79,*LW LC30/=JF^02KZCB%$,OLM[[8TP8G$UT"XZ;\>:<6D;3
M=YHKZ;JF-8(RBLX'=*X$+$@<?@]$MC=WGFUB<H$]<RS+>49ECLM]4%7UN&'!
MU/% 5[M./0(?7G!9"U !V4(,<S:#U<U<9R&:)9L_G>J!1Q-:9:PY)%9YZ$3F
M^E.H)>/OF)KJ4M14G0D<+].+/ !A;,KAAQ]QS9_:NH4SV*:C5.VV$#MV0I8Y
MU+73WN[:P?_([MI)=;%+>4H-WD>PW8%_4BT%T][/3RNS)-*IJ?'^Y69%V9%G
M] .@-).O#S#$>\N9_GG%/;6=7K?7Q9O'U)OJ2SPN-Z G[P^&;R0/-[/;18]-
M=0<K>:#*&Q#(WED@*4)/W%O@3.YM14@PZJJN6!(QWIET_D!IJGI^J)X6TB;7
M?@C0WTQ K24O5'?1]6E1[T(NBQ8JOMR3ZH;Z6'37\S0]P;&LV)?8E/TGF(^F
M_<VF_P(R^DK]&]UU,7IRO0"6\U/U%_J-7E?=0C]+*&$.YA6:^'/8I<<YF6&\
M#=^Y$& I^9+1R2&GA$M&H[;HVNQ!R-0KADS72), 3 ^<&&^!%A&CO%R0ZFB-
M\:"M;AA=!'*I&T8GSS&M'-**Y)B.VJ(;RJ?1ME*W'T>-[E@V#>HXJ:4KE[6<
MOO7MF1*GGIN*BM0NX75#8%F.R45[)6)'3/)@\6_"E\"_%R5/'!YRNG.=)>@B
M+W>6;OO7MH$7TI<8@?I@>E/+\0)W0XAI( PQG7Q#XZ2&@B%<[CLD/,VL^QN)
M]H.E L:;$?L63Y?\)RDCI?:'1OO#DV,QQ38,K<?9 &\DR[VK#VY7LS/' Q0Q
MC Q5I+H>7B]Y(M4#%3 [)&!66AC\8F-NQPJ0#P8J0"[@=Q4@/]\ N2*IFI+4
M2%J2.L^<"Y73(5,XXS-(R,N(L]8_@6/4$95<*C>D@/20BFWV&NVQ;)4I+J;4
M[SG0[/'+&&5HMMWH#^1KF'D6%EZ5LNI]8+("5/R&OKE8NLY3=,/O B28O"E
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
M2WJKAQDLE_2-*$#)WZJQYU4>^(BZ#!Q5 *-;^I/G!=3X$+B@MG/X8$_UDNE
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
MZ4B )Z.Z-;DG%^VA!GNX->^B[$$[>6/"1F',[7^N1KDJ<N47OJ+%=-EJRI;
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
MH$U!FX*V-%G\SOQR'W1?H5M=04?1^!8:7_F%9*!Q11Q2$0=&R0D+D\M ' H
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
M@$&G,>K(=Y'PM93T?"$\E,="HN3!JIT!4B</CD:M>ES45;X E3Q8/'EP8Q]
M66%NYP7D:A2BW,%S#BV($@A7T85&M^K;TJ+VBA>I7UP.?^:QIR@SL6IM1=[T
M1"QWT*WX-M&N#*R\&:=(7!Q?I"[3!:@QG&!BT;J"Y>85Y*&E*!%2*@WFJ(F0
MXT9WU)4+_+J[@]\YLN4!9"YAN\9R>%24>7FF:DQM"S8>P,9)'0;^GCC&2_@2
M7B%P\5?1^@#98 [3\,UCJ1(A_2:Y!9<1OF,""-NP)FV86M0RG-0\UL,ROY^S
M<PUUO% U^TN;_0^X):.UQ1^%9S;N_Q(QU1L"FT$3\R5ZX#OP'SXI\JO,.R3%
MI*X]XLS(6[I(3>8Y/"'3!M8T(WADW\ M!\2P4(G-J(T-H%"Z>(<,3<FS[I&_
M;L0T;3SHEHMI.V)9L[\.91\72\MYH?2>ND]F.$(&V6)48C/S'AQ?MY*?WSB>
M_]7Q_T5A/E/GT48])<:GP=6[=JN302=.$7#N%FX-G$-@N_&/86]63R?T)_X-
M(H-:@( & 2J')S7YE,AR7:EOD.>Y.9T3TV._G(8_F> #X@$<P%6BD^<09ILZ
MQUE\FND8C"Y2<%.F37VB$^#.*C",P[?P>YVK%!7V4G33].CTC1&X+U1W4X<6
M02X_,_S8:_&_'^84R<NE,&'@F/0ALM-HLN!#^D"G,%MOU^/$QQ;C46[, 4\"
M05";30'VE@U8^($C_D"@+<,UG^"IDQ<@H^06   0FVG?2$4>._D4(>)"T?#$
M+U*;T=HL0,]%:NV<$+W6%LS\VQI:_FT-*%<XR6 R1$GXDPQ;&KR10$H&E*")
M36*TGKRK#K'91"+>(,S@(7>!.YWC-J/1L\/TRM\<*>48,N',L2SG&30PPE0F
ML@2J0P6349GN><&"*Y@D\#@5 A&"4/ I^\(,M$KRA&HE4B.^\_'^[HX %K G
MPFO&]$BN\.L#)6:TA\!'Q9X$$I=S87%8./0!(0SH=M'=P)KS;_@>'(N&-4U(
MQ$D*@J_T:ZK!5K,O>^L$&=-Q.J=&8-%OLPT68J0-(.!%>(=PAT8?-S-7S/R
MK/X ,WAOP;=#T=[I=7M=K'M,00%;X@FZ8"U&%A5'![[_:#N2*;6LT'B+7WM+
M?1J]#K<^-.5<?O9XABGCCIU8ZH@SP%84(5.(UP:BB_W3;Y.V8FWB]UN<2L<?
M"'8$#MC^GZOAE8C)I[#1U#VE5VAS"9NR>3_)].$ZF9Y1#,-/^:M_@?PE'YGX
M35J>H019_2O4B:HAKSJFT\C#CAU)V'%CU%EN;HRMO=,Q@3!RJTCJG$AJI$A*
MD52Y)#64EJ2.+[\WT=<V A?0VE:F4+_9[S?GD5\4&:%][9=*<XV^F]Z?S9E+
MT2<,VXX^7U?W);XLU3UN&H.0$G.B_MW!;GF,+-N%Q5N^F+:Y"!:9\-A=L'.L
MOU=:I#^.TR?<-4@2MT 1GT*"^ [T$(?)FMK5NTZKGRVA0)HD;YMV+/22V";]
M9\VW21-E._Q2<9I.$70^QLP.F8=L$+!C\[9S@@!-=',J'P)Z.[:V.3,(R.8M
M*@@X.PCHB:XO#U>T/3Q#"&BWQMD+"5L@0'0G*W^;:@\!G59O)!L$G(U7O#J[
MZ6.4*6.9,TI>+> I<^^U,IL$@'E(&+KHS7$1JT9']D#=13+!#'!ID)-@-FBU
MV^L99DJ"UUF";R3(K#9:%4&.%4$J@A3I1A419%^K%4&J2ZCE*3A/C@4T99G^
MB])N=C0'^SO6GJB1.1B1PS]B:LA8.CVM-<AZ._(MPO[^[G/9+<(==JK?;?6S
MMK/R"]5:B O)>UB!:[A;-7EW.ZU^MFW-%B#8WXE^!D#0';:Z63^Z H*S X*!
MJ+QUO1W$.Y"WUFOU]HT4#_9WI9\#$/1:_>SE4^4F/ALKRC"?3 .O4;Z8U)*X
M#J%LN+F;)56,ZYNGT90^A$>?C:#)QO!*\A^!@G<S 10%*PJ6E(*'N^FNBH)/
MHW254WOHU/>2HVO)].?4"@SZKLI9Q?>DY;E +L<AA9L"NBJ96KH'['GW^_N_
M7ZW3?[N]?J\Z2<KAW6MX:W4#.O7$KS^^Y%[.20RS,@R*76,9=G@!A(AS8![Q
MB]71+_5'VIRX5/^SJ<]\/"_=>M9?O/7S2ZT_(@]M+_*(JP6L;\H?'[X+-X67
MTQ!OB4[F+L+M7WQG>E6R@7/UCMW:QSH;-XC]MN^]_547[63X]P83:QL);T+$
M#95%DM3*T"["DYPR)Z5/(6(5$=SBJ;+)$#Y1_KUHMP[/B/E,/8_2;TOJ@EBT
M'S]C.1]/5%NAA\0FJ*U0386<KXY/"_)PI\=Y&/83MJ7[&^%KKJ"N3A(].R-A
MX0UI"NV@[J3;+WS3QK]YK,&,.3.GNNT3?3H%;$+Z(4O',J<FS LT*F*8WM1R
ML/*.:9,#CDSC)P8RSF=3L=D-2%9%Z]:T=7MJZA:Y]^$-5ET2GL:8F UKPNMK
MVP[@&]_ITG%] MKH+3RY*/FTV62:?T=]-*X15$Z)H+BH7HL7U;M/[#%O.N6M
M-F'M/(1G /\0EWJ!Y2/PZH:S9%^XOK\I.-51+SR+Z'@##X]W0BWG^=0UNU+*
MQZA5#P:*SLECY&,QZ$$RQ;==@Y5 >S;]^6%'U.)GE!H6SYX:?'N0@#Q?MPVP
M<I!(G%FX;<7(]W]U8"_WA:0K0@9>5$1+MT )LD&^/%'B@]GEL9I\9$']N6.0
MI>N@+66 N0>ZT6$+;T1U[[ 0HHZEP;#J5V(;@'M,+ D(G\&>+)?P;U:X#FB
MG45B6WBE.LXS,%N$&_(*W[JBLQD8@;@:]B9?Q]7K%F%%JGF!.]%7&F$M/KX3
M8:4[QDEAV3*.6&620GM5L,LH6O[/=ORP^A^'58(;Z5+?=;QEN$C=^$_@^1Q\
M88M!B[3@D_0& @"53=34"JL+PGM+4)&QDB4,LV2F-]CDK/Z@8;)IP78O3-^/
MZ0Q_DR#&Q\!<;7E4SA"H(J*'5FI@PRR*]?%FTGB'8#C#P]^*)IX>%ZM,NL@K
M.DS.QP/A]1=AT9O+KG:UD28LN\IUP^O5V8%8!#2\CB7)G>O8\.>4BU46'%M]
M>!_NC/=CB30.3QRTM5*+M*:UTN^X1=]F/SSTQU _66BUTQ546B51D57D>2
M)WI:R.DZ/L5CK&&9^@3C:"@SG:)E-]=A,)3A#RD0.9QN0G&..$&FP2*P&)HT
M.> D&#%2%&#9-BYZHEN,OH%4@'=UTP8J L4%/_,XD97&J7RB):QUKB.V$*S7
MZ***9P(73)D"E\#TOWE(VRN-T%OI@; 01%R7SBGP^1/>28?7M,'+D\X="X#
M^QNAK#PY 7D\U;TYF8'8\+A8S(J BRU,NE6QF>L9'N-*CC,#%18D*YP=;#W,
M)YC!*?(:F_!7Q'C(B%/J(FER.0G/?*(@R:WP0SRFY2+&Q' $1B,N7<#/5KP-
M]++@5:ZQ>DNT4YAEW#1_-N>F :MX$X$C (ACT[>_XE??<6T>2^5N-JU35:L9
M-B6\R7$=Y&]LV?>XZB_)-=_&2[ZVC1N^X' /_Q$N%S[X&"V6(^KF](3MYCQF
M7W^;H=<%H3&5ACT:YJ1A=S))V+P<:BNTF+EV ML;:E1LUXN7%N^$N,&O/A&F
M'7M</3H8,D.I&0)'!(7>G%)TAB4J9(?T$Y7>#DT\+Z8V!V'7@XW$"30M0%%X
MFF=ZO+"V'Y$EVXH6FIED&;A+A_T4P$BWI@RP@5#7Q5%"!C525%Q0&BWT%RZ
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
MXTIF8B2Z]T3WS@V=2D>W3*I+=&^+[IW[.I6.;EUP=,O$XDZ'57@3"$XI8EH
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
M&5#'Y),T!*U++>>)^CA!;AC /%!\?YR][Z!&X=.' *;45W!11Q9^9,\:RJ=
ML?R]%S#@0YLRE6FPUO$P&!@$:.. LH?S$>-04)^A8B4V<Z>#,0F4"3X'1S\E
M,_9UUV'? ET/0W"2I6XHET4L)S;15G!.586-/%A M*D0PP@G(8?>&LQ9SAJ\
MP>C^>[VE:S<+K_Y;.;SW/3WBFVC 7T<?^5P^I :;6+_NV?M!8]5MY+ ')6/#
M;XT7U- A34:T*<K'(Z12/ HN8XDR%6>%*48QD$!!B1D47L1AX7Q<*SC<@MX!
M<-=MK)([+. .'\\TQ33TIJY/00F@!5J=@<1>H/*)_N0Z3%3_3F .62^-WRB\
MBP,:CW\4?<^ 'T'[X!1:,+O1.-F3PRG>[ATVLXZ7]MRGQKGU\WQLF8"!-_&,
M@@L)FOC=!5[Z7IF!JHB&ZM$)L5 *HX=F#GU('[$GO(M=(2U0ZZ 5GT!(W=!7
M3*:PAS1XIM39VX+H388I/K<X%7O?J!N9HI0C '=%_+SUHU=,33_:*+3F)J:*
MQLIP!F\,JX_^UMCUF!?.5L;B*I]IU&B5LF=J3R&;D!F7JHR%?K9@+&&@X#-!
MQ*AB6Q,KB%Y@B'_PHL^XG=UO"&R2B/%6X],7X5M5IC8L\B997=H3,+FL-C7X
M_VRQO0L]NJ7<:@OMB-;+[!WUT!<GC_3K"&(HM-(\19H(\[D.TKQ:.J=,^3<Y
M\- 7X=^&R<*O ]X-2C'$*716A;%6. Y<6WA-.S3I^]*&,Y\0TWI2#)OXL/IW
MOWWXXVPYH&UBM+0:B4:?>'Q1X*,XZ;MXPR_?/Y]MB.24A:<4F"&.PM^],-3K
M<O!$,3.\3_SS/"J= O3/AQXE/\[)*,! DMC/9.8O!Y8+[Q?'K?I.<6L2A2Y-
M[>_7]YE3R]V2U(/GTT&4L8<:X9? -<X*=I0@%.3.^@C, $8AR 1 5F<Q_6.V
ML_82_'=TT;8,G/<7.EU?EKH(W2!FP_=WG@LVXI8,X4Z@(T$5#=^7-)0O+KH.
M,!I8(+;;QKS'CY9#',,"(\R"P0E?N:,.DD%V04=>'%!)KGV^8%%$.K4"SCY(
ME^6/:28IEL^\TPPR#N5Y3,&I8#H*W09, 7!?C$7?MJV %PUNUQ-E;I=#'PG[
MA3[!A7!C5;%8,B#^*MQ\ J'CN6W]H/;L'.)UYSQGHH#%_ 3&X<7#0L\O\UW
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
M>QQ\+*_N/,LQK"FQ5X>P2T&*E"LI5V7+E73HBQU][+6F/F&I]\'\=YYX3UT
M %WSTM+O+]_O_[L[=I3+AO)/,I-B(BARJH+PHP-8@E>"M[+@Y5[^1\LAX&V#
MLUV:ES\? @8?EX;AADY@.8]U<OIWJWDH?!/O^%O4==H@WG(G>+[5B]O 0TJ=
M>+=W2&WW.=[E';DV_(;XGE+/QS(>UXDW@J.'I7:4+8=]8A#</V6/9X4Y_%.3
M5^E%5<F'VQK6VHW>-JB2.\$RB#G%($9F?T5W!JN$<;EY(>$KX5OPY@7[VS5X
M=0AUN9,AA4P*F=S)D$% )<$O9A @D\$"ZW:9#-YF)T-B5WA,2.Q6?B/CJ"MW
M\(>]&R;/B\Z?'>695V-B>1,DV. I\P\N\4S\)8[Q_#=''-##$^6VGXZ]9VHY
M?ZWI2I<RN9>> 1*N7#64#S8Q?AQK;A_"?U$:*  TQSS6,S^[KL/>=7P\#-T3
MRZ&>\AMYMJWCS2YS.#XTE-]<UX1;'>NQUZY#;%/YK:'\@=MK_]F%L4!4=^=8
M>\O;[@(*L:?[U^6DMHK[K[@?BP9Y#(!WR(1&]#2J8KHP+/PENB@BAW"-,":J
MGN_04F*,8[-#ANX39;="X\.L/-^A-6--&5^9(EQ)DTM,W>>(CH) -.LY=,8/
M_%*6,.1<,CX2T<2;Q7AS3B2!C"\.7,C9=OB;'/MTL-P"KD7VIV(AAI@)(+F-
M)B/I:D?2$L$2P=5&L#S(5K^X(U=-ZV'BCH2 J=]ACX?GO[M@D_%?[R[&P<1^
M_U__'U!+ P04    " !,6EI04*S!T)N4  !9W   #@   '!R;W1O9W)A<&@N
M:G!G[+P'5%/;VC:ZZ+U(%X2H@ T!18H*)B+29"/80&E1$>E&I04(B8+T+EM0
M4*)T5(C4J)3005$1$!"0DJ H);""&):FW>4Y^Y:Q/6-\9]_O.^/^X[][R73
MR)Q9[SOG.Y_W>>:<:_'>\Z8!V2-6ME8 'Q\?<!;^!_#& 0N GX_OY\\?EX"0
MP,]+6%!00$A$6$3D9Q$5DQ 3%147%1$1EQ(7EY"$+Q$Q:1DI2>F?O__\DI_-
M?[:"?R1%140E__+%:P'6B?(M\3L+\&T&^-?Q":SCXW4 " #@$^+[QP7\<?'Q
M"P@*"<,FB4O %>ID8?,%!/AA8X4$!>%/H^#/ <%U0G*;=IL+RQ\[)[+YBH+!
M]<P'HIJ'JEH5C_>#6GO.7XT6$U=25EFOJKUEZ[;M.PR-C$WV[MMO<=C2RMK&
M]LB)DZ><G$^?<?&\X'71V\?7+R@X)#0,&QX1<R,V+CXA,>EFUN^WLG-NW\DM
M*"PJ+BDM*W]875-;5T]^^NQY6WM'9U=WSXN7 X/OAH9'WH^.46DS'S_-?OXR
M-\]8^;KZC;D&??_QTR\^0(#O_[S^I5_K8+_XX3$0%/GI%Q]_V,\*ZP2%-NT6
MEC,_)G+NBOQF@^NB"H<R'U2UBFGN.0XJGK_:+ZZD94C59OQT[1^>_7N.1?^_
M\NS_<NS_]FL,D!3@@P=/8!V  CCL2IU3G"*NNH]+\>M;R^F-BMZ1WCKF5S#(
M9X$;GM@4/=(LOWSJNJ!LN*"SOYORX@P/T&(Y\H"JP@[TCXCF^P)<U4)J/$>!
MP,<#J.:^/*![&P^(*X/.\0!+1 L!<G0A,%XN^]R7EOB[XM\5_Z[X=\6_*_Y_
M5E&'T(I0--O-V$-'@:E0NCE#Y'U]5"'+Q#%I>9&U%CCUJ6K\7D7*M[$HG8BG
M^C*$%WU8"K<S2H8''/F6!"S[%"0!.M&<NX2/1#\$TQ";S ,<G(<F1X18>WG
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
MV/S+BDI8W2_ZY)]KS=O@\K'9V'+&E<AGIWS-""7FD[\QO+"KE&8G]DU-0E1
M.-NJ+BXR[%X2_T.*SPU^5J]LOBO[&=C+'(=J6(>@K=/X>.HSI 8\VWF 0O#4
M.BB.(.N'1S2_6[5[K6G=2*Y-8[[LU ^<'2U+9DD\->NMUB3?JKYHZM($BZI6
M3C:=$H")SO$0HC (*3BU$C_EW791J'BM&GF_79NT%ROEEL9H8A5;6#4'&0IW
M]JC%I4ZH93!0B\HF2884@0F3+OVD; ]3"(>Y/\#V]\90H9"+54VG.[ONZ3X=
M@('-8S1%J2*]*E' Y9!%M-IED1@?!'B,F,(#-/"J39^OU_* .+P*PR0:KT)H
MBZ0U2(6VK3G5#RVK?CU1G>Y0E:V6Y^DO;U\P)1^TXX/!X[=X:E+]<A TPCH-
MQ3G$H(0JV2+2\478PIDN4NF<RX'N!-TM[P(,=QOGA#RRUP+-=\I<=AKN"CYY
MID#8.B5'7'2OAQ8L#XY"6Q;:5:U2J<3U.#M0F!@XW0JR7-PECM>&X]P+XC.'
M)>9(NI7:<H\^>#QY5N^C)X!V6Z=WY/=EY#9N9RZF$Q$?X72#:\ H20RAHF3-
M:?JB_ON=F<'.7,EL%9?)O3O;Q\SDS)F^>F=UPJ3:#<..QYT/50"^A\'!$9V
MPT&9-$1RL]1;3<CZW(S#Z+@-+.V/72$\F%=6TMBS>?['@?VF*@/?$;_)6Y2^
M'&BL]KCM<4'\YHV=4T'LS5"L<B?E!E>%X:8T<*:=%KAET"EMTDKR[4ZPZ('8
M!CF!&>30UQ >P):3;],5+OB!Z4A/CI NI]$-8)K.&'YTCE JT9=@/))S8N)(
MSJS=5IOU%YXWKD/FUV/XW7LRJW=TR<^G"ARJ!>MCO4I\0>V*N'O\+N,'B:$J
MF8<*TL_>EVF[MD]? ?]V4@V\U&S8"[$=<ZX>#7P@"[F>S#<M/V08N^FF::CM
MT8[0[Q*XLNZ"NW"$2ZG#F/-#!/K* T2C_'E YC:(P@.T1:AH3JH\#YC+.5G)
MO+97'_)9AJ'B+:J;"%DLH-F)UFS#,)B$?T',]+$W?2-Q#U<RDX!I"K6P$<4#
M#L*10Z#*5!!6M!%@_R0L]^X3TE%@_##ENUS#V#8!6.?%I8$\@"/ #H=S [*.
M!_3\3FBWQA*XU[EF,%U"N/" CT?^V#<R;8<!28;QF2O[ U:QFX_]"YMUF@K^
MMO%O&_^V\7]#&_>8:=/&T:H^M!]O=(^JG'DI1!FLW+FE9X%5WH_0B+\DXS?X
MCZW@/_.72N;_^*ZQ0/2OT/A4'_Z.%4>\(@]XWX_BW@F!O?OKN\W_ ^57CM,P
M]@L5VO9/ORHEF%=XP,VH,L+[?IH^YP#ZYWKM+Z>I_DD X2)CQ'FBUWBFA/O:
MPZ )=$[496N3?)^?ZER,*,IU\3-P+3JVAY*U(66SO"Q%\V5U5VHT^/+^@^^1
MS,><1TA-B, ,X-S[)B5_$B)&/H*F++FC#$52&T?"^AW;N[S(9?^'%P>:*HL%
MLW4NUNQ/S#O_8K;/2V%K<)O)#]8,H?6 "#,>PA"H*'GU2);\2;Y+638CRZMV
MB5G/U9*W/[BK*1EWD.4FIR)K0S)\#N?N -S6YZ!,#-N4Z:!NC@'9;M94NM4X
M33DA\%O3#HE8R]RQ T=-/S6S]B0\$/[PYARG [5U:=!'Y%4N@;Z'D3XSU:[@
M;CJC2+[!-I^6N9;KW!%E=PH<CO=$YM%2+T'SF0K/TX_5A9^OB;/7L ?;ZFNR
M@C;G)!:>0@=!<ZQ#6$HG18C@'>DN<?H9*-S ^.HQ&/QH FU?0VYH>*L9)<<#
MSA 7^R>M=VIX2IF-Q^5N/Y38&["S4%T_E3)]!R'8&$5=EO8UR9=MJ!G$[7Y@
M2XV,#-S:H9J?I<[-VN24Y4!1(L-*SF?<=+NNU.>[*5ZW,WX;6%[ :W*[N0)0
M'<A=:-__+>U96''?XTZ:1&AZ1^ZMIMGTR'46"L^CWCE+7"F],5IW?, F\]1'
MQP<7,G:)M&LH<$JX^W'.#!*=;UJE>8]?OL8[U,5[(HY# 6R+0"I'U9KQ^*;'
M?+(GY^'-,4,[]<:(LVE>5786.G8Z(LGBCWZL!TVZ<] *S>)85,=:?;EG).V
M7._)I_6_T<DWL7).YOF7BQ,^Y^OTA"Q#VLXME'5?(D*)5ZBZ+GMW!NK7LK+K
M&!Y5_J@$75*EU.N/JK55[CMS:X/>#-AN]I/:WV"_>^/WZDL_I(>'==1.3T<;
MQJF<U+I2$'O2<1<@< V@']0P9733I"L\&=;4U=U8M4Z3S/=0[L5H["7#?HT"
M0K61]KAL9-W9RZ^FFDYW:5X*"W2:)U Q4 PW$0VCE3Y,>C[%(I1A)+K/UH'#
MO8# ,9B_-?E6!%9<$H0.Q.J1G^AU/0*>2CNW\8!8"DWFAS8>AJ^6)KA1MN)D
M_\$-RFQ='B!+Z->!X4OH"X7]I)"KQ ,24%]N_00O_E4T][1SI"5P&0V2V>8\
MX# )QE?E A@IVM(A5^Y&'E#@# .L1#_A^SEWN@)?*Z%MBB'"D:-H$*8]8$#I
M%4?]V>"P6L>_#?S;P/^4@98$@G".I]'K5_VNXZZ%=CNKGQY.5/"Z<QL$@)OV
MP.4!]H61!ZGWN$H0?1W?Q8N-_8"C*1&Z[42(X0&^$J0$O,)@"%V@14-GQ/#
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
MI8^:BSLX2 F8[!&<TMG5]1]/4_@/M^+\3WO^=05MX&+8]O-&QRIAK#$P1TN
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
MU _I@P#.?N3F_*::VO6-C^.BT*>4Y$49Q.$K$0MBROM Z1!K9A$#6C;#8YL
M@\UAQJ#[VS27#1#XN-  BT!>]YMV? 9;YC[<#WE-1-R7%#QC*#Y>'U)KU'IT
MU[NK &^]\39#M/A$?0.P1N:#2!LZ B'$QVVC+68>?&L3C=.[7PCJMDP="SS:
M4';H"/_ZH=\*WOQCV.K0CF$QM"1@%9"/JC:">D/K%=M&@]9D*"Z/=%Q<'EK'
M57^_?D;]I9M5L)29G>-;2ZZ)]@N[BK;TT?NR%@8;DW2E3W_N6.R"0"9WLD4G
MS9]ZT0T/>8EF3@;T\KH\(JNM'78(N39JT,S(*_=9NOS'&,9@QD@-:XUO-/;T
M4VPD.X<7<?Q?"7[X+EA*9M%!4>(9!\=]?H'^Z0+]D((OAA8B]Y4WC+0J/UXI
M79!&]H)3A!B:DRUJ?CF6.CAAWVT0-<7=][/]C??(;]>V00EA1EZQSEZ:IW:=
M_*[NU[/_M=S'',),%H7_'L&7/P[*7SQA!%_L7^<VT6LE@Q,;;45ZGI$1"J:<
MD_A*YC->6.*[ <A /RM]^EJ/7B/B,6J8 _/N/N-:=?T86BSO@^N<K\3<4%8I
MVH[ZL6&2[JXRRC?8CM_R/R;O4ET^/<13<"C;K#7VF) E)?>STC;(C"5E6C6+
M-GKO0;M,].M-E!NKF'+*.N\@>GM^;]:PMRFH0UN!TAQA&)#KS:&]X-@^I[_
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
MM-/U,C2RP[@6] )?U<03F>EG&*,BU7&65.%=A[4?*XBGBLC.-Q:!MASW,\Q
MVKE]<&FVRIB>F4NE)SQ8T2@6[ C5[C1Y<\=T(G-=5\[\+'YB'(>JQ;]Z9TES
M,G4^#QM)6 W\F<O^ZMBMF4P^;H)58#>J\10)<\B>FI&AV!M3;IB0BZ7-B3\O
MC?3?._Y\=;#+Z9;Y6.FGC_Y;#B<G(:6+3Y^V7L6&PJ:L?#B5;:9RCTI0C99@
M662+Q3/JHPM.5EVN(?>'RX/=;&7[ZS,_)*V$61);=]<WS&L.X9NFH;E6OTCV
M8!A3HSN87)&Z5AW2>]47;48RR)!%F&@D(AZKXQGWS.ROY)H\J)LUJ]4=TREQ
M"Y,3ME0GINB3=ZGB;H$AC(MTS00+*-LRMK?#W&0^M4-]:'0)LP<<NH\^QBD0
M>H2LZ&'LRKN5&S^B2YR>1;@4Z:0:E?=G07_--@C?J]1.[/K-HD8>P%5>Y7YX
M?@;"-.JVP=/=9_M8/EQR#?G/FS<J3C-3[RSB+Q3:$XY$YPK!53>\&Z+R4=^,
MV/AUCU]C$!3&?^>+TM(ZC%]UL4WG.'_Z#O/U3'TXID.=?8#I1T'>C207];I(
MH(]Y4[71MF?9UI6?A\,%,W7&9II\7.3S(DY5-FUS?6+WSAOVESPQ\M-\ ESQ
M&F;O=.D)I<*!("];(DY\,<\E;JT:UNT5%]@I/HPM0^15&;=<-NK27BBI?[@O
M9D^>U>Z:@8$^B2:B_SX(4YV4MM*AQ.RVR: ]3U3NNVN8HFQK9U<_)V-5@7(V
MC6@-4+S61SO=7GO_Q#75?:\8LQ-^*0/>KFI9V*<_0<#VKS@)4 NW\65:!\XT
M)6X<\6%[M-'E"D#M3J,:E>;(2MM;:CEUOC[9)B2&Z[>/=RQ/>EUTECLI9'L1
MH<:82R;4\("T&[A8B_U@7TR'VN*L=#L],N4+VNH/N"\30UM7KVFZ]G6Q,Q2W
MHNG4=^$AK<F6O&O_;YTYR%]3Q4-L9?[.(_$X,Y^ZXCS?Z[LCMFLRUR2@L8H9
M:05ZCOFU3=2SH"^FS?/Q'PC^M5)]"&[R;X$20?EALI[WOGG9_D =HYCEV#'6
MH1FD78TV#?&&)XSY,/5?X\'UN,,^L=O8#C<SL*K3YPPD= Y/I5HKW>U&SLW^
MK/CX&6[#_!0%-5.X"KYG[(-#SBTY5;U;L(#1/SVR*'ZC([1)I:?CE1S]?SMM
MG*U;OUN<<AU7\7F !_BOWKZ)6YX"3Z)"SM&%BFB/PCX3%3?NKDN<ZCX5?6 R
M),W;LWWBTMGJPEL)Z4=GUTM=Q^SL4J6G#)?^N1?FY*",K9DIX*<!M[&J-ABE
MVOG5N4#W\= O@73=P2J<\L3:QBF50WY[SK@==$_TR_[L6_'OGJ?Y_VD4]M]6
M_FWEWU;^;>7_L9540L*/BX7%8$0+-;IZ>FPY%K%X,R(?B2Q?NL9?J:^^<?1(
MJSU2:(93>1R -D7]Z#[Z\=>0-_4?4$L! A0#%     @ 3%I:4!V%(0** P
M2"    T              ( !     &5X7S$V-S P-RYH=&U02P$"% ,4
M" !,6EI0[5XLE^ "   _"0  #0              @ &U P  97A?,38W,# X
M+FAT;5!+ 0(4 Q0    ( $Q:6E PJ[/;EP8   QV   -              "
M < &  !E>%\Q-C<P,#DN:'1M4$L! A0#%     @ 3%I:4"_KP+CA!P  Z2\
M  T              ( !@@T  &5X7S$V-S Q,2YH=&U02P$"% ,4    " !,
M6EI0)-TP9;H'  #8+P  #0              @ &.%0  97A?,38W,#$R+FAT
M;5!+ 0(4 Q0    ( $Q:6E#PNWJ_*@0  !L?   -              "  7,=
M  !E>%\Q-C<P,3,N:'1M4$L! A0#%     @ 3%I:4)W'-',.#@  >U0   T
M             ( !R"$  &5X7S$W,C4Q,RYH=&U02P$"% ,4    " !,6EI0
M(+QK;R&,  !5IP  "P              @ $!,   :6UA9V4P,BYJ<&=02P$"
M% ,4    " !,6EI0IEBUDR88   J- $ $0              @ %+O   <')L
M8BTR,#$Y,3(S,2YX<V102P$"% ,4    " !,6EI0.M?%($<5  !K30$ %0
M            @ &@U   <')L8BTR,#$Y,3(S,5]C86PN>&UL4$L! A0#%
M  @ 3%I:4'3?1R/@70  X+ ( !4              ( !&NH  '!R;&(M,C Q
M.3$R,S%?9&5F+GAM;%!+ 0(4 Q0    ( $Q:6E")? N3^GX  /U'!P 5
M          "  2U( 0!P<FQB+3(P,3DQ,C,Q7VQA8BYX;6Q02P$"% ,4
M" !,6EI0LBT4@8ED   3@0D %0              @ %:QP$ <')L8BTR,#$Y
M,3(S,5]P<F4N>&UL4$L! A0#%     @ 3%I:4*_]K&M8?@( $6\D !0
M         ( !%BP" '!R;&(R,#$Y,3(S,5\Q,&LN:'1M4$L! A0#%     @
M3%I:4%"LP=";E   6=P   X              ( !H*H$ '!R;W1O9W)A<&@N
9:G!G4$L%!@     /  \ GP,  &<_!0    $!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>100
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "prlb20191231_10k.htm": {
   "axisCustom": 0,
   "axisStandard": 21,
   "contextCount": 233,
   "dts": {
    "calculationLink": {
     "local": [
      "prlb-20191231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "prlb-20191231_def.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-eedm-def-2019-01-31.xml",
      "http://xbrl.fasb.org/srt/2019/elts/srt-eedm1-def-2019-01-31.xml"
     ]
    },
    "inline": {
     "local": [
      "prlb20191231_10k.htm"
     ]
    },
    "labelLink": {
     "local": [
      "prlb-20191231_lab.xml"
     ],
     "remote": [
      "https://xbrl.sec.gov/dei/2019/dei-doc-2019-01-31.xml",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-doc-2019-01-31.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "prlb-20191231_pre.xml"
     ]
    },
    "referenceLink": {
     "remote": [
      "https://xbrl.sec.gov/dei/2019/dei-ref-2019-01-31.xml",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-ref-2019-01-31.xml"
     ]
    },
    "schema": {
     "local": [
      "prlb-20191231.xsd"
     ],
     "remote": [
      "https://xbrl.sec.gov/country/2017/country-2017-01-31.xsd",
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd",
      "http://xbrl.sec.gov/invest/2013/invest-2013-01-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd",
      "http://xbrl.sec.gov/naics/2011/naics-2011-01-31.xsd",
      "https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd",
      "http://xbrl.sec.gov/sic/2011/sic-2011-01-31.xsd",
      "https://xbrl.sec.gov/exch/2018/exch-2018-01-31.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://xbrl.sec.gov/currency/2017/currency-2017-01-31.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-gaap-2019-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-roles-2019-01-31.xsd",
      "http://xbrl.fasb.org/srt/2019/elts/srt-2019-01-31.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://xbrl.fasb.org/srt/2019/elts/srt-types-2019-01-31.xsd",
      "http://xbrl.fasb.org/srt/2019/elts/srt-roles-2019-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-types-2019-01-31.xsd",
      "https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd",
      "http://www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "http://xbrl.fasb.org/us-gaap/2019/elts/us-parts-codification-2019-01-31.xsd"
     ]
    }
   },
   "elementCount": 574,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2019-01-31": 31,
    "http://www.protolabs.com/20191231": 4,
    "http://xbrl.sec.gov/dei/2019-01-31": 6,
    "total": 41
   },
   "keyCustom": 30,
   "keyStandard": 419,
   "memberCustom": 20,
   "memberStandard": 40,
   "nsprefix": "prlb",
   "nsuri": "http://www.protolabs.com/20191231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "true",
     "longName": "000 - Document - Document And Entity Information",
     "role": "http://www.protolabs.com/20191231/role/statement-document-and-entity-information",
     "shortName": "Document And Entity Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "009 - Disclosure - Note 4 - Net Income Per Common Share",
     "role": "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
     "shortName": "Note 4 - Net Income Per Common Share",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "010 - Disclosure - Note 5 - Business Combinations",
     "role": "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
     "shortName": "Note 5 - Business Combinations",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "011 - Disclosure - Note 6 - Goodwill and Other Intangible Assets",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "012 - Disclosure - Note 7 - Fair Value Measurements",
     "role": "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
     "shortName": "Note 7 - Fair Value Measurements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "013 - Disclosure - Note 8 - Marketable Securities",
     "role": "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
     "shortName": "Note 8 - Marketable Securities",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "014 - Disclosure - Note 9 - Property and Equipment",
     "role": "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment",
     "shortName": "Note 9 - Property and Equipment",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "015 - Disclosure - Note 10 - Inventory",
     "role": "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
     "shortName": "Note 10 - Inventory",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "016 - Disclosure - Note 11 - Financing Obligations",
     "role": "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
     "shortName": "Note 11 - Financing Obligations",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "017 - Disclosure - Note 12 - Employee Benefit Plans",
     "role": "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
     "shortName": "Note 12 - Employee Benefit Plans",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "018 - Disclosure - Note 13 - Stock-based Compensation",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
     "shortName": "Note 13 - Stock-based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "001 - Statement - Consolidated Balance Sheets",
     "role": "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
     "shortName": "Consolidated Balance Sheets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:MarketableSecuritiesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "019 - Disclosure - Note 14 - Leases",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases",
     "shortName": "Note 14 - Leases",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "020 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss",
     "role": "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
     "shortName": "Note 15 - Accumulated Other Comprehensive Loss",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "021 - Disclosure - Note 16 - Income Taxes",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
     "shortName": "Note 16 - Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LegalMattersAndContingenciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "022 - Disclosure - Note 17 - Litigation",
     "role": "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
     "shortName": "Note 17 - Litigation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LegalMattersAndContingenciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "023 - Disclosure - Note 18 - Segment Reporting",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
     "shortName": "Note 18 - Segment Reporting",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "024 - Disclosure - Note 19 - Subsequent Events",
     "role": "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
     "shortName": "Note 19 - Subsequent Events",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "025 - Disclosure - Significant Accounting Policies (Policies)",
     "role": "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies",
     "shortName": "Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "026 - Disclosure - Note 3 - Revenue (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
     "shortName": "Note 3 - Revenue (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "027 - Disclosure - Note 4 - Net Income Per Common Share (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
     "shortName": "Note 4 - Net Income Per Common Share (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "028 - Disclosure - Note 5 - Business Combinations (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
     "shortName": "Note 5 - Business Combinations (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": null,
     "groupType": "statement",
     "isDefault": "false",
     "longName": "002 - Statement - Consolidated Balance Sheets (Parentheticals)",
     "role": "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
     "shortName": "Consolidated Balance Sheets (Parentheticals)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "029 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "030 - Disclosure - Note 7 - Fair Value Measurements (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
     "shortName": "Note 7 - Fair Value Measurements (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:HeldToMaturitySecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "031 - Disclosure - Note 8 - Marketable Securities (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
     "shortName": "Note 8 - Marketable Securities (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:HeldToMaturitySecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "032 - Disclosure - Note 9 - Property and Equipment (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables",
     "shortName": "Note 9 - Property and Equipment (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "033 - Disclosure - Note 10 - Inventory (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
     "shortName": "Note 10 - Inventory (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "034 - Disclosure - Note 13 - Stock-based Compensation (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
     "shortName": "Note 13 - Stock-based Compensation (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "035 - Disclosure - Note 14 - Leases (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
     "shortName": "Note 14 - Leases (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "036 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
     "shortName": "Note 15 - Accumulated Other Comprehensive Loss (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "037 - Disclosure - Note 16 - Income Taxes (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
     "shortName": "Note 16 - Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "038 - Disclosure - Note 18 - Segment Reporting (Tables)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
     "shortName": "Note 18 - Segment Reporting (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "003 - Statement - Consolidated Statements of Comprehensive Income",
     "role": "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
     "shortName": "Consolidated Statements of Comprehensive Income",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-4",
      "lang": null,
      "name": "us-gaap:GrossProfit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "039 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
     "shortName": "Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "040 - Disclosure - Note 3 - Revenue (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
     "shortName": "Note 3 - Revenue (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "041 - Disclosure - Note 3 - Revenue - Disaggregation of Revenue (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
     "shortName": "Note 3 - Revenue - Disaggregation of Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ix:continuation",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "042 - Disclosure - Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "shortName": "Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "043 - Disclosure - Note 5 - Business Combinations (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
     "shortName": "Note 5 - Business Combinations (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember",
      "decimals": null,
      "lang": "en-US",
      "name": "prlb:BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "044 - Disclosure - Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
     "shortName": "Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2017-11-30_BusinessAcquisitionAxis-RapidMember",
      "decimals": "-4",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:BusinessAcquisitionProFormaInformationTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessAcquisitionsProFormaRevenue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "045 - Disclosure - Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
     "shortName": "Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:BusinessAcquisitionProFormaInformationTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessAcquisitionsProFormaRevenue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "046 - Disclosure - Note 6 - Goodwill and Other Intangible Assets (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:AmortizationOfIntangibleAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "047 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:GoodwillAcquiredDuringPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "048 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "004 - Statement - Consolidated Statements of Shareholders' Equity",
     "role": "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
     "shortName": "Consolidated Statements of Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "049 - Disclosure - Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
     "shortName": "Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "050 - Disclosure - Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
     "shortName": "Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:HeldToMaturitySecuritiesTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecurities",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "051 - Disclosure - Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
     "shortName": "Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:HeldToMaturitySecuritiesTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "052 - Disclosure - Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
     "shortName": "Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "053 - Disclosure - Note 9 - Property and Equipment (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual",
     "shortName": "Note 9 - Property and Equipment (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Land",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "054 - Disclosure - Note 9 - Property and Equipment - Components of Property and Equipment (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
     "shortName": "Note 9 - Property and Equipment - Components of Property and Equipment (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Land",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryRawMaterials",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "055 - Disclosure - Note 10 - Inventory - Inventory (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details",
     "shortName": "Note 10 - Inventory - Inventory (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryRawMaterials",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LineOfCredit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "056 - Disclosure - Note 11 - Financing Obligations (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual",
     "shortName": "Note 11 - Financing Obligations (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LineOfCredit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "057 - Disclosure - Note 12 - Employee Benefit Plans (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
     "shortName": "Note 12 - Employee Benefit Plans (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2018-01-01_2018-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
      "reportCount": 1,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "058 - Disclosure - Note 13 - Stock-based Compensation (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
     "shortName": "Note 13 - Stock-based Compensation (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "005 - Statement - Consolidated Statements of Cash Flows",
     "role": "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
     "shortName": "Consolidated Statements of Cash Flows",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DeferredIncomeTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "059 - Disclosure - Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
     "shortName": "Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "060 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "shortName": "Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember",
      "decimals": null,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "061 - Disclosure - Note 13 - Stock-based Compensation - Stock Option Activity (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details",
     "shortName": "Note 13 - Stock-based Compensation - Stock Option Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "062 - Disclosure - Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
     "shortName": "Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "em",
       "p",
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USDPerShare",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "063 - Disclosure - Note 13 - Stock-based Compensation - Restricted Stock Options (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
     "shortName": "Note 13 - Stock-based Compensation - Restricted Stock Options (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2016-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "064 - Disclosure - Note 13 - Stock-based Compensation - Performance Stock (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
     "shortName": "Note 13 - Stock-based Compensation - Performance Stock (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2016-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "065 - Disclosure - Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
     "shortName": "Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "066 - Disclosure - Note 14 - Leases (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
     "shortName": "Note 14 - Leases (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "prlb:LesseeFinancialLeaseLiabilityNumberOfLeases",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "067 - Disclosure - Note 14 - Leases - Balance Sheet Information (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
     "shortName": "Note 14 - Leases - Balance Sheet Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseExpenseTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-10-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "068 - Disclosure - Note 14 - Leases - Lease Expense (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details",
     "shortName": "Note 14 - Leases - Lease Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseExpenseTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-10-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "006 - Disclosure - Note 1 - Nature of Business",
     "role": "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
     "shortName": "Note 1 - Nature of Business",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "069 - Disclosure - Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
     "shortName": "Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "070 - Disclosure - Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
     "shortName": "Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "071 - Disclosure - Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
     "shortName": "Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2016-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R73": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeTaxExpenseBenefit",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "072 - Disclosure - Note 16 - Income Taxes (Details Textual)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
     "shortName": "Note 16 - Income Taxes (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "3",
      "lang": null,
      "name": "prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R74": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "073 - Disclosure - Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
     "shortName": "Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R75": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "074 - Disclosure - Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
     "shortName": "Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R76": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "075 - Disclosure - Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
     "shortName": "Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "3",
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R77": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "076 - Disclosure - Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
     "shortName": "Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R78": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "077 - Disclosure - Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
     "shortName": "Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R79": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "078 - Disclosure - Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "shortName": "Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "007 - Disclosure - Note 2 - Summary of Significant Accounting Policies",
     "role": "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
     "shortName": "Note 2 - Summary of Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R80": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "079 - Disclosure - Note 18 - Segment Reporting - Income From Operations (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
     "shortName": "Note 18 - Segment Reporting - Income From Operations (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R81": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "080 - Disclosure - Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
     "shortName": "Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R82": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-4",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "081 - Disclosure - Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
     "shortName": "Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_StatementGeographicalAxis-US",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R83": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "082 - Disclosure - Note 18 - Segment Reporting - Depreciation and Amortization (Details)",
     "role": "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
     "shortName": "Note 18 - Segment Reporting - Depreciation and Amortization (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31_StatementGeographicalAxis-US",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "008 - Disclosure - Note 3 - Revenue",
     "role": "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
     "shortName": "Note 3 - Revenue",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20191231_10k.htm",
      "contextRef": "d_2019-01-01_2019-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 61,
   "tag": {
    "country_JP": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "JAPAN"
       }
      }
     },
     "localname": "JP",
     "nsuri": "http://xbrl.sec.gov/country/2017-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "UNITED STATES"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2017-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_AmendmentFlag": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.",
        "label": "Amendment Flag"
       }
      }
     },
     "localname": "AmendmentFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_CityAreaCode": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Area code of city",
        "label": "City Area Code"
       }
      }
     },
     "localname": "CityAreaCode",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_CurrentFiscalYearEndDate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "End date of current fiscal year in the format --MM-DD.",
        "label": "Current Fiscal Year End Date"
       }
      }
     },
     "localname": "CurrentFiscalYearEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r410"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an annual report.",
        "label": "Document Annual Report"
       }
      }
     },
     "localname": "DocumentAnnualReport",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentFiscalPeriodFocus": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.",
        "label": "Document Fiscal Period Focus"
       }
      }
     },
     "localname": "DocumentFiscalPeriodFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "fiscalPeriodItemType"
    },
    "dei_DocumentFiscalYearFocus": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This is focus fiscal year of the document report in CCYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.",
        "label": "Document Fiscal Year Focus"
       }
      }
     },
     "localname": "DocumentFiscalYearFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentInformationLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Document Information [Line Items]"
       }
      }
     },
     "localname": "DocumentInformationLineItems",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "stringItemType"
    },
    "dei_DocumentInformationTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Container to support the formal attachment of each official or unofficial, public or private document as part of a submission package.",
        "label": "Document Information [Table]"
       }
      }
     },
     "localname": "DocumentInformationTable",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. The format of the date is CCYY-MM-DD.",
        "label": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r409"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as a transition report.",
        "label": "Document Transition Report"
       }
      }
     },
     "localname": "DocumentTransitionReport",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentType": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.",
        "label": "Document Type"
       }
      }
     },
     "localname": "DocumentType",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "submissionTypeItemType"
    },
    "dei_EntityAddressAddressLine1": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name",
        "label": "Entity Address, Address Line One"
       }
      }
     },
     "localname": "EntityAddressAddressLine1",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressCityOrTown": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of the City or Town",
        "label": "Entity Address, City or Town"
       }
      }
     },
     "localname": "EntityAddressCityOrTown",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressPostalZipCode": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Code for the postal or zip code",
        "label": "Entity Address, Postal Zip Code"
       }
      }
     },
     "localname": "EntityAddressPostalZipCode",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressStateOrProvince": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of the state or province.",
        "label": "Entity Address, State or Province"
       }
      }
     },
     "localname": "EntityAddressStateOrProvince",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.",
        "label": "Entity Central Index Key"
       }
      }
     },
     "localname": "EntityCentralIndexKey",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "centralIndexKeyItemType"
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.",
        "label": "Entity Common Stock, Shares Outstanding"
       }
      }
     },
     "localname": "EntityCommonStockSharesOutstanding",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "sharesItemType"
    },
    "dei_EntityCurrentReportingStatus": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Current Reporting Status"
       }
      }
     },
     "localname": "EntityCurrentReportingStatus",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "All the names of the entities being reported upon in a document. Any legal structure used to conduct activities or to hold assets. Some examples of such structures are corporations, partnerships, limited liability companies, grantor trusts, and other trusts. This item does not include business and geographical segments which are included in the geographical or business segments domains.",
        "label": "Entity [Domain]"
       }
      }
     },
     "localname": "EntityDomain",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables",
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate if registrant meets the emerging growth company criteria.",
        "label": "Entity Emerging Growth Company"
       }
      }
     },
     "localname": "EntityEmergingGrowthCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityFileNumber": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.",
        "label": "Entity File Number"
       }
      }
     },
     "localname": "EntityFileNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Filer Category"
       }
      }
     },
     "localname": "EntityFilerCategory",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "filerCategoryItemType"
    },
    "dei_EntityIncorporationStateCountryCode": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Two-character EDGAR code representing the state or country of incorporation.",
        "label": "Entity Incorporation, State or Country Code"
       }
      }
     },
     "localname": "EntityIncorporationStateCountryCode",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r412"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).",
        "label": "Entity Interactive Data Current"
       }
      }
     },
     "localname": "EntityInteractiveDataCurrent",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityPublicFloat": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.",
        "label": "Entity Public Float"
       }
      }
     },
     "localname": "EntityPublicFloat",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.",
        "label": "Entity Registrant Name"
       }
      }
     },
     "localname": "EntityRegistrantName",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.",
        "label": "Entity Shell Company"
       }
      }
     },
     "localname": "EntityShellCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC).",
        "label": "Entity Small Business"
       }
      }
     },
     "localname": "EntitySmallBusiness",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r411"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.",
        "label": "Entity Tax Identification Number"
       }
      }
     },
     "localname": "EntityTaxIdentificationNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_EntityVoluntaryFilers": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.",
        "label": "Entity Voluntary Filers"
       }
      }
     },
     "localname": "EntityVoluntaryFilers",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.",
        "label": "Entity Well-known Seasoned Issuer"
       }
      }
     },
     "localname": "EntityWellKnownSeasonedIssuer",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_LegalEntityAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The set of legal entities associated with a report.",
        "label": "Legal Entity [Axis]"
       }
      }
     },
     "localname": "LegalEntityAxis",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables",
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "dei_LocalPhoneNumber": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Local phone number for entity.",
        "label": "Local Phone Number"
       }
      }
     },
     "localname": "LocalPhoneNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r407"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Title of a 12(b) registered security.",
        "label": "Title of 12(b) Security"
       }
      }
     },
     "localname": "Security12bTitle",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r408"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of the Exchange on which a security is registered.",
        "label": "Security Exchange Name"
       }
      }
     },
     "localname": "SecurityExchangeName",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "edgarExchangeCodeItemType"
    },
    "dei_TradingSymbol": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Trading symbol of an instrument as listed on an exchange.",
        "label": "Trading Symbol"
       }
      }
     },
     "localname": "TradingSymbol",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "tradingSymbolItemType"
    },
    "prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "For contingent consideration arrangements recognized in connection with an asset acquisition, this element represents an estimate of the consideration which may be paid upon completion of certain milestones.",
        "label": "prlb_AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone",
        "terseLabel": "Asset Acquisition, Contingent Consideration Arrangement Upon Completion of Milestone"
       }
      }
     },
     "localname": "AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_AssetAcquisitionsContingentConsiderationLiability": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in an asset acquisition.",
        "label": "prlb_AssetAcquisitionsContingentConsiderationLiability",
        "terseLabel": "Asset Acquisitions, Contingent Consideration, Liability"
       }
      }
     },
     "localname": "AssetAcquisitionsContingentConsiderationLiability",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The milestone period of liability recognized arising from contingent consideration in an asset acquisition.",
        "label": "prlb_AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod",
        "terseLabel": "Asset Acquisitions, Contingent Consideration, Liability, Milestone Period"
       }
      }
     },
     "localname": "AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The period of time in which goodwill arising from a business combination that is expected to be deductible for tax purposes.",
        "label": "prlb_BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod",
        "terseLabel": "Business Acquisition, Goodwill, Expected Tax Deductible Period"
       }
      }
     },
     "localname": "BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of increase (decrease) of expense recognized in the period that reflects the allocation of the costs of tangible assets in a business combination.",
        "label": "prlb_BusinessAcquisitionIncreaseDecreaseInDepreciationExpense",
        "terseLabel": "Business Acquisition, Increase (Decrease) in Depreciation Expense"
       }
      }
     },
     "localname": "BusinessAcquisitionIncreaseDecreaseInDepreciationExpense",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationWorkingCapitalAdjustment": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of purchase price adjustment based on the working capital (current assets minus current liabilities) of the acquired entity which reduces the purchase price if the closing date working capital of the acquired entity is below an agreed amount.",
        "label": "prlb_BusinessCombinationWorkingCapitalAdjustment",
        "terseLabel": "Business Combination, Working Capital Adjustment"
       }
      }
     },
     "localname": "BusinessCombinationWorkingCapitalAdjustment",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_CNCMachiningFirstcutMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the CNC Machining (Firstcut) product.",
        "label": "CNC Machining (Firstcut) [Member]"
       }
      }
     },
     "localname": "CNCMachiningFirstcutMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ComputerHardwareAndSoftwareGross": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The gross amount of computer hardware and software as of the balance sheet date.",
        "label": "Computer hardware and software"
       }
      }
     },
     "localname": "ComputerHardwareAndSoftwareGross",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_CorporateUnallocatedAndJapanSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Segment for corporate unallocated expenses and Japan.",
        "label": "Corporate Unallocated and Japan Segment[Member]"
       }
      }
     },
     "localname": "CorporateUnallocatedAndJapanSegmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_DeferredTaxAssetsRightOfUseLeases": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.",
        "label": "prlb_DeferredTaxAssetsRightOfUseLeases",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxAssetsRightOfUseLeases",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of depreciation and amortization by geographic region.",
        "label": "Depreciation and Amortization by Geographic Region [Table Text Block]"
       }
      }
     },
     "localname": "DepreciationAndAmortizationByGeographicRegionTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_ESPPMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "ESPP [member",
        "label": "ESPP [Member]"
       }
      }
     },
     "localname": "ESPPMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
        "terseLabel": "Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 6.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Qualified subsidiary election.",
        "label": "Share based compensation"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 0.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.",
        "label": "Revaluation of deferred tax liability"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 1.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.",
        "label": "Transition tax"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTransitionTaxPercent",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EmployeeStockPurchasePlanOfferingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.",
        "label": "prlb_EmployeeStockPurchasePlanOfferingPeriod",
        "terseLabel": "Employee Stock Purchase Plan, Offering Period"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanOfferingPeriod",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted average purchase price of shares purchased through the Employee Stock Purchase Plan.",
        "label": "prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased",
        "terseLabel": "Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "prlb_EmployeesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represent the individuals employed by the acquired company.",
        "label": "Employees [Member]"
       }
      }
     },
     "localname": "EmployeesMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_EuropeSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Operating segment for Europe",
        "label": "Europe Segment [Member]"
       }
      }
     },
     "localname": "EuropeSegmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeFourMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Exercise price range four [member",
        "label": "Exercise Price Range Four [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeFourMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeOneMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Exercise price range one [member",
        "label": "Exercise Price Range One [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeOneMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeThreeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Exercise price range three [member]",
        "label": "Exercise Price Range Three [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeThreeMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Exercise price range two [member]",
        "label": "Exercise Price Range Two [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeTwoMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of expenditures for additions to long-lived assets by geographic region.",
        "label": "Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]"
       }
      }
     },
     "localname": "ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_IncomeFromOperationsByGeographicAreaTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of income from operations by geographic area.",
        "label": "Income from Operations by Geographic Area [Table Text Block]"
       }
      }
     },
     "localname": "IncomeFromOperationsByGeographicAreaTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_InjectionMoldingProtomoldMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the Injection Molding (Protomold) product.",
        "label": "Injection Molding (Protomold) [Member]"
       }
      }
     },
     "localname": "InjectionMoldingProtomoldMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_JapanSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Operating segment for Japan.",
        "label": "Japan Segment [Member]"
       }
      }
     },
     "localname": "JapanSegmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_LesseeFinancialLeaseLiabilityNumberOfLeases": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of the lessee's finance leases.",
        "label": "prlb_LesseeFinancialLeaseLiabilityNumberOfLeases",
        "terseLabel": "Lessee, Financial Lease, Liability, Number of Leases"
       }
      }
     },
     "localname": "LesseeFinancialLeaseLiabilityNumberOfLeases",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "pureItemType"
    },
    "prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of the lessee's operating leases which have not yet commenced.",
        "label": "prlb_LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases",
        "terseLabel": "Lessee, Operating Lease, Lease Not yet Commenced, Number of Leases"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "pureItemType"
    },
    "prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) Plan",
        "label": "prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
        "terseLabel": "Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan"
       }
      }
     },
     "localname": "MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "integerItemType"
    },
    "prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan",
        "label": "prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan",
        "terseLabel": "Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan"
       }
      }
     },
     "localname": "MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_NoteToFinancialStatementDetailsTextual": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note To Financial Statement Details Textual"
       }
      }
     },
     "localname": "NoteToFinancialStatementDetailsTextual",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_NotesToFinancialStatementsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Notes To Financial Statements [Abstract]"
       }
      }
     },
     "localname": "NotesToFinancialStatementsAbstract",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_OfficeFurnitureAndEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Office furniture and equipment [member",
        "label": "Office Furniture And Equipment [Member]"
       }
      }
     },
     "localname": "OfficeFurnitureAndEquipmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information pertaining to office space, manufacturing facilities, and certain company vehicles and equipment.",
        "label": "Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]"
       }
      }
     },
     "localname": "OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_OperatingLossCarryforwardsExpirationPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The expiration period of operating loss carryforwards.",
        "label": "prlb_OperatingLossCarryforwardsExpirationPeriod",
        "terseLabel": "Operating Loss Carryforwards, Expiration Period"
       }
      }
     },
     "localname": "OperatingLossCarryforwardsExpirationPeriod",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the operating loss carryforwards percentage of taxable income limit.",
        "label": "prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome",
        "terseLabel": "Operating Loss Carryforwards, Percentage of Taxable Income"
       }
      }
     },
     "localname": "OperatingLossCarryforwardsPercentageOfTaxableIncome",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_OtherProductsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents other products.",
        "label": "Other Products [Member]"
       }
      }
     },
     "localname": "OtherProductsMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.",
        "label": "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit",
        "terseLabel": "Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit"
       }
      }
     },
     "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.",
        "label": "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit",
        "terseLabel": "Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit"
       }
      }
     },
     "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_RapidMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the information pertaining to the acquisition of Rapid Manufacturing Group, Inc.",
        "label": "Rapid [Member]"
       }
      }
     },
     "localname": "RapidMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ScheduleOfLeaseExpenseTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of lease expenses incurred.",
        "label": "Schedule of Lease Expense [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfLeaseExpenseTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the weighted average remaining lease terms and discount rates.",
        "label": "Schedule of Lease Terms and Discount Rates [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of operating lease assets and liabilities.",
        "label": "Schedule of Operating Lease Assets and Liabilities [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "Performance change (in shares)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.",
        "label": "Performance change, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "prlb_SheetMetalMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the information pertaining to sheet metal.",
        "label": "Sheet Metal [Member]"
       }
      }
     },
     "localname": "SheetMetalMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_StockOptionsRestrictedStockAndOtherMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Equity awards of stock options, restricted stock, and equity instruments not otherwise classified.",
        "label": "Stock Options, Restricted Stock, and Other [Member]"
       }
      }
     },
     "localname": "StockOptionsRestrictedStockAndOtherMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_The401KRetirementPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A company sponsored 401(k) defined contribution plan.",
        "label": "401(k) Retirement Plan [Member]"
       }
      }
     },
     "localname": "The401KRetirementPlanMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ThreeDPrintingFinelineMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the 3D Printing (Fineline) product.",
        "label": "3D Printing (Fineline) [Member]"
       }
      }
     },
     "localname": "ThreeDPrintingFinelineMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_UnitedStatesSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Operating segment for United States.",
        "label": "United States Segment [Member]"
       }
      }
     },
     "localname": "UnitedStatesSegmentMember",
     "nsuri": "http://www.protolabs.com/20191231",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_statement-statement-note-10-inventory-inventory-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 10 - Inventory - Inventory (Details)"
       }
      }
     },
     "localname": "statement-statement-note-10-inventory-inventory-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-10-inventory-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 10 - Inventory"
       }
      }
     },
     "localname": "statement-statement-note-10-inventory-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Information about Stock Options Outstanding (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-performance-stock-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Performance Stock (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-performance-stock-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-restricted-stock-options-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Restricted Stock Options (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-restricted-stock-options-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-stock-option-activity-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Stock Option Activity (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-stock-option-activity-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation - Stock-based Compensation Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-stockbased-compensation-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 13 - Stock-based Compensation"
       }
      }
     },
     "localname": "statement-statement-note-13-stockbased-compensation-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-leases-balance-sheet-information-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 14 - Leases - Balance Sheet Information (Details)"
       }
      }
     },
     "localname": "statement-statement-note-14-leases-balance-sheet-information-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-leases-lease-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 14 - Leases - Lease Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-14-leases-lease-expense-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 14 - Leases - Maturities of Operating Lease Liabilities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-leases-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 14 - Leases"
       }
      }
     },
     "localname": "statement-statement-note-14-leases-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 14 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)"
       }
      }
     },
     "localname": "statement-statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 15 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-accumulated-other-comprehensive-loss-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 15 - Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "statement-statement-note-15-accumulated-other-comprehensive-loss-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes - Significant Components of Provision for Income Taxes (Details)"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-16-income-taxes-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 16 - Income Taxes"
       }
      }
     },
     "localname": "statement-statement-note-16-income-taxes-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-depreciation-and-amortization-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting - Depreciation and Amortization (Details)"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-depreciation-and-amortization-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-income-from-operations-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting - Income From Operations (Details)"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-income-from-operations-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting - Long-lived Assets by Geographic Region (Details)"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-18-segment-reporting-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 18 - Segment Reporting"
       }
      }
     },
     "localname": "statement-statement-note-18-segment-reporting-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 3 - Revenue - Disaggregation of Revenue (Details)"
       }
      }
     },
     "localname": "statement-statement-note-3-revenue-disaggregation-of-revenue-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-revenue-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 3 - Revenue"
       }
      }
     },
     "localname": "statement-statement-note-3-revenue-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)"
       }
      }
     },
     "localname": "statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-net-income-per-common-share-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 4 - Net Income Per Common Share"
       }
      }
     },
     "localname": "statement-statement-note-4-net-income-per-common-share-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 5 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-business-combinations-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 5 - Business Combinations"
       }
      }
     },
     "localname": "statement-statement-note-5-business-combinations-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 5 - Business Combinations - Unaudited Pro Forma Information (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-business-combinations-unaudited-pro-forma-information-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 6 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)"
       }
      }
     },
     "localname": "statement-statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 6 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)"
       }
      }
     },
     "localname": "statement-statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-goodwill-and-other-intangible-assets-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 6 - Goodwill and Other Intangible Assets"
       }
      }
     },
     "localname": "statement-statement-note-6-goodwill-and-other-intangible-assets-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 7 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)"
       }
      }
     },
     "localname": "statement-statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-fair-value-measurements-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 7 - Fair Value Measurements"
       }
      }
     },
     "localname": "statement-statement-note-7-fair-value-measurements-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 8 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)"
       }
      }
     },
     "localname": "statement-statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 8 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-marketable-securities-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 8 - Marketable Securities"
       }
      }
     },
     "localname": "statement-statement-note-8-marketable-securities-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 9 - Property and Equipment - Components of Property and Equipment (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-property-and-equipment-tables": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Note 9 - Property and Equipment"
       }
      }
     },
     "localname": "statement-statement-note-9-property-and-equipment-tables",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-significant-accounting-policies-policies": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Significant Accounting Policies"
       }
      }
     },
     "localname": "statement-statement-significant-accounting-policies-policies",
     "nsuri": "http://www.protolabs.com/20191231",
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsAxis": {
     "auth_ref": [
      "r128",
      "r132"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Consolidation Items [Axis]"
       }
      }
     },
     "localname": "ConsolidationItemsAxis",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Consolidation Items [Domain]"
       }
      }
     },
     "localname": "ConsolidationItemsDomain",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r133",
      "r211",
      "r213",
      "r397",
      "r398"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Product and Service [Axis]"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Product and Service [Domain]"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statistical Measurement [Axis]"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statistical Measurement [Domain]"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r136",
      "r211",
      "r214",
      "r399",
      "r402",
      "r404"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_TitleOfIndividualAxis": {
     "auth_ref": [
      "r138",
      "r362"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Title of Individual [Axis]"
       }
      }
     },
     "localname": "TitleOfIndividualAxis",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_TitleOfIndividualWithRelationshipToEntityDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Title of Individual [Domain]"
       }
      }
     },
     "localname": "TitleOfIndividualWithRelationshipToEntityDomain",
     "nsuri": "http://fasb.org/srt/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "localname": "AccountingPoliciesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingStandardsUpdate201409Member": {
     "auth_ref": [
      "r215"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accounting Standards Update 2014-09 Revenue from Contracts with Customers (Topic 606).",
        "label": "Accounting Standards Update 2014-09 [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201409Member",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountingStandardsUpdate201602Member": {
     "auth_ref": [
      "r346"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accounting Standards Update 2016-02 Leases (Topic 842).",
        "label": "Accounting Standards Update 2016-02 [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201602Member",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r38"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 4.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "us-gaap_AccountsPayableCurrent",
        "terseLabel": "Accounts payable"
       }
      }
     },
     "localname": "AccountsPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r4",
      "r20",
      "r139",
      "r140",
      "r212"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.",
        "label": "Accounts receivable, net of allowance for doubtful accounts of $952 and $919 as of December 31, 2019 and December 31, 2018, respectively"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 12.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments",
        "negatedLabel": "Amortization of held-to-maturity securities"
       }
      }
     },
     "localname": "AccretionAmortizationOfDiscountsAndPremiumsInvestments",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "auth_ref": [
      "r14",
      "r372",
      "r389"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.",
        "label": "Income taxes payable"
       }
      }
     },
     "localname": "AccruedIncomeTaxesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesAndOtherLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other.",
        "label": "Accrued liabilities and other"
       }
      }
     },
     "localname": "AccruedLiabilitiesAndOtherLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r36",
      "r198"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.",
        "label": "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
        "negatedLabel": "Accumulated depreciation and amortization"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r55",
      "r56",
      "r57"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.",
        "label": "Accumulated other comprehensive loss"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r54",
      "r57",
      "r58",
      "r331"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners.",
        "label": "AOCI Attributable to Parent [Member]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedTranslationAdjustmentMember": {
     "auth_ref": [
      "r53",
      "r57",
      "r58",
      "r331"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated other comprehensive income (loss) resulting from foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to the parent.",
        "label": "Accumulated Foreign Currency Adjustment Attributable to Parent [Member]"
       }
      }
     },
     "localname": "AccumulatedTranslationAdjustmentMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": {
     "auth_ref": [
      "r185"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
        "terseLabel": "Acquired Finite-lived Intangible Assets, Weighted Average Useful Life"
       }
      }
     },
     "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r21"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 2.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.",
        "label": "Additional paid-in capital"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders.",
        "label": "Additional Paid-in Capital [Member]"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentForAmortization": {
     "auth_ref": [
      "r92",
      "r190"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate amount of recurring noncash expense charged against earnings in the period to allocate the cost of assets over their estimated remaining economic lives.",
        "label": "us-gaap_AdjustmentForAmortization",
        "terseLabel": "Amortization, Total"
       }
      }
     },
     "localname": "AdjustmentForAmortization",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsForNewAccountingPronouncementsAxis": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by new accounting pronouncement.",
        "label": "Adjustments for New Accounting Pronouncements [Axis]"
       }
      }
     },
     "localname": "AdjustmentsForNewAccountingPronouncementsAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r227",
      "r229",
      "r266",
      "r267"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.",
        "label": "Stock-based compensation expense"
       }
      }
     },
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Adjustments to reconcile net income to net cash provided by operating activities:"
       }
      }
     },
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdvertisingCostsPolicyTextBlock": {
     "auth_ref": [
      "r269"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for advertising cost.",
        "label": "Advertising Cost [Policy Text Block]"
       }
      }
     },
     "localname": "AdvertisingCostsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AdvertisingExpense": {
     "auth_ref": [
      "r270"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, product or product line.",
        "label": "us-gaap_AdvertisingExpense",
        "terseLabel": "Advertising Expense"
       }
      }
     },
     "localname": "AdvertisingExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r229",
      "r260",
      "r265"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.",
        "label": "Allocated share-based compensation expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r26",
      "r145",
      "r162"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current.",
        "label": "Allowance for doubtful accounts"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r92",
      "r182",
      "r190"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "us-gaap_AmortizationOfIntangibleAssets",
        "terseLabel": "Amortization of Intangible Assets, Total"
       }
      }
     },
     "localname": "AmortizationOfIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetImpairmentCharges": {
     "auth_ref": [
      "r92",
      "r195"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 7.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of write-down of assets recognized in the income statement. Includes, but is not limited to, losses from tangible assets, intangible assets and goodwill.",
        "label": "Loss on impairment of assets"
       }
      }
     },
     "localname": "AssetImpairmentCharges",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r131",
      "r371",
      "r388"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_Assets",
        "totalLabel": "Total assets"
       }
      }
     },
     "localname": "Assets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r6",
      "r7",
      "r50"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 6.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_AssetsCurrent",
        "totalLabel": "Total current assets"
       }
      }
     },
     "localname": "AssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Current assets"
       }
      }
     },
     "localname": "AssetsCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsFairValueDisclosure": {
     "auth_ref": [
      "r336"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_AssetsFairValueDisclosure",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "AssetsFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r230",
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of award under share-based payment arrangement.",
        "label": "Award Type [Axis]"
       }
      }
     },
     "localname": "AwardTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BankTimeDepositsMember": {
     "auth_ref": [
      "r381"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Certificates of deposit (CD) or savings accounts with a fixed term or understanding the customer can only withdraw by giving advanced notice with a bank or other financial institution. A CD is a short to medium-term investment available at banks and savings and loan institutions where a customer agrees to lend money to the institution for a certain amount of time and is paid a predetermined rate of interest.",
        "label": "Bank Time Deposits [Member]"
       }
      }
     },
     "localname": "BankTimeDepositsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingMember": {
     "auth_ref": [
      "r197"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Facility held for productive use including, but not limited to, office, production, storage and distribution facilities.",
        "label": "Building [Member]"
       }
      }
     },
     "localname": "BuildingMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingsAndImprovementsGross": {
     "auth_ref": [
      "r9",
      "r197"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 3.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depreciation of building structures held for productive use including addition, improvement, or renovation to the structure, including, but not limited to, interior masonry, interior flooring, electrical, and plumbing.",
        "label": "Buildings and improvements"
       }
      }
     },
     "localname": "BuildingsAndImprovementsGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree.",
        "label": "Business Acquisition, Acquiree [Domain]"
       }
      }
     },
     "localname": "BusinessAcquisitionAcquireeDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r312",
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by business combination or series of individually immaterial business combinations.",
        "label": "Business Acquisition [Axis]"
       }
      }
     },
     "localname": "BusinessAcquisitionAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionProFormaInformationTextBlock": {
     "auth_ref": [
      "r310",
      "r311"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of pro forma results of operations for a material business acquisition or series of individually immaterial business acquisitions that are material in the aggregate.",
        "label": "Business Acquisition, Pro Forma Information [Table Text Block]"
       }
      }
     },
     "localname": "BusinessAcquisitionProFormaInformationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss": {
     "auth_ref": [
      "r310",
      "r311"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period.",
        "label": "us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss",
        "terseLabel": "Net income"
       }
      }
     },
     "localname": "BusinessAcquisitionsProFormaNetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessAcquisitionsProFormaRevenue": {
     "auth_ref": [
      "r310",
      "r311"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The pro forma revenue for a period as if the business combination or combinations had been completed at the beginning of the period.",
        "label": "us-gaap_BusinessAcquisitionsProFormaRevenue",
        "terseLabel": "Revenue"
       }
      }
     },
     "localname": "BusinessAcquisitionsProFormaRevenue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationAcquisitionRelatedCosts": {
     "auth_ref": [
      "r308"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This element represents acquisition-related costs incurred to effect a business combination which costs have been expensed during the period. Such costs include finder's fees; advisory, legal, accounting, valuation, and other professional or consulting fees; general administrative costs, including the costs of maintaining an internal acquisitions department; and may include costs of registering and issuing debt and equity securities.",
        "label": "us-gaap_BusinessCombinationAcquisitionRelatedCosts",
        "terseLabel": "Business Combination, Acquisition Related Costs"
       }
      }
     },
     "localname": "BusinessCombinationAcquisitionRelatedCosts",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r323",
      "r324",
      "r325"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.",
        "label": "us-gaap_BusinessCombinationConsiderationTransferred1",
        "terseLabel": "Business Combination, Consideration Transferred, Total",
        "totalLabel": "Total purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable": {
     "auth_ref": [
      "r323",
      "r324"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.",
        "label": "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
        "terseLabel": "Business Combination, Consideration Transferred, Equity Interests Issued and Issuable"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r329"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).",
        "label": "Business Combination Disclosure [Text Block]"
       }
      }
     },
     "localname": "BusinessCombinationDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual": {
     "auth_ref": [
      "r309"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This element represents the amount of earnings or loss of the acquiree since the acquisition date included in the consolidated income statement for the reporting period.",
        "label": "us-gaap_BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual",
        "terseLabel": "Business Combination, Pro Forma Information, Earnings or Loss of Acquiree since Acquisition Date, Actual"
       }
      }
     },
     "localname": "BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual": {
     "auth_ref": [
      "r309"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This element represents the amount of revenue of the acquiree since the acquisition date included in the consolidated income statement for the reporting period.",
        "label": "us-gaap_BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual",
        "terseLabel": "Business Combination, Pro Forma Information, Revenue of Acquiree since Acquisition Date, Actual"
       }
      }
     },
     "localname": "BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of assets acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
        "totalLabel": "Total assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Assets acquired:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
        "terseLabel": "Current assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities",
        "terseLabel": "Current liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 2.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of intangible assets, excluding goodwill, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
        "terseLabel": "Other intangible assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles": {
     "auth_ref": [
      "r314",
      "r315"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of identifiable intangible assets recognized as of the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
        "terseLabel": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Finite-Lived Intangibles"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
        "totalLabel": "Total liabilities assumed"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Liabilities assumed:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities",
        "terseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of other assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets",
        "terseLabel": "Other long-term assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": {
     "auth_ref": [
      "r315"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
        "totalLabel": "Net assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationsPolicy": {
     "auth_ref": [
      "r98",
      "r307"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy.",
        "label": "Business Combinations Policy [Policy Text Block]"
       }
      }
     },
     "localname": "BusinessCombinationsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareNet": {
     "auth_ref": [
      "r405"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The carrying amount of capitalized computer software costs net of accumulated amortization as of the balance sheet date.",
        "label": "us-gaap_CapitalizedComputerSoftwareNet",
        "terseLabel": "Capitalized Computer Software, Net, Ending Balance"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAcquiredFromAcquisition": {
     "auth_ref": [
      "r76"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow associated with the acquisition of business during the period (for example, cash that was held by the acquired business).",
        "label": "us-gaap_CashAcquiredFromAcquisition",
        "negatedTerseLabel": "Cash acquired"
       }
      }
     },
     "localname": "CashAcquiredFromAcquisition",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r2",
      "r32",
      "r94"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 5.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash and cash equivalents",
        "periodEndLabel": "Cash and cash equivalents, end of period",
        "periodStartLabel": "Cash and cash equivalents, beginning of period"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of cash and cash equivalent balance.",
        "label": "Cash and Cash Equivalents [Axis]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in cash and cash equivalents. Cash and cash equivalents are the amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Includes effect from exchange rate changes.",
        "label": "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease",
        "totalLabel": "Net increase (decrease) in cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPeriodIncreaseDecrease",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r11",
      "r95",
      "r98"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.",
        "label": "Cash and Cash Equivalents, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember": {
     "auth_ref": [
      "r219",
      "r340"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Unsecured promissory note (generally negotiable) that provides institutions with short-term funds that is excluded from cash and cash equivalents.",
        "label": "Commercial Paper, Not Included with Cash and Cash Equivalents [Member]"
       }
      }
     },
     "localname": "CommercialPaperNotIncludedWithCashAndCashEquivalentsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Stock that is subordinate to all other stock of the issuer.",
        "label": "Common Stock [Member]"
       }
      }
     },
     "localname": "CommonStockMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r19"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Face amount or stated value per share of common stock.",
        "label": "Common stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "CommonStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r19"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws.",
        "label": "Common stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r19"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.",
        "label": "Common stock, shares issued (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r19",
      "r208"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.",
        "label": "Common stock, shares outstanding (in shares)",
        "periodEndLabel": "Balance (in shares)",
        "periodStartLabel": "Balance (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r19"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 4.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,786,459 and 26,984,747 shares as of December 31, 2019 and December 31, 2018, respectively"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationRelatedCostsPolicyTextBlock": {
     "auth_ref": [
      "r97",
      "r233"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for salaries, bonuses, incentive awards, postretirement and postemployment benefits granted to employees, including equity-based arrangements; discloses methodologies for measurement, and the bases for recognizing related assets and liabilities and recognizing and reporting compensation expense.",
        "label": "Compensation Related Costs, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "CompensationRelatedCostsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r61",
      "r63",
      "r64"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.",
        "label": "Comprehensive income",
        "totalLabel": "Comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomePolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for comprehensive income.",
        "label": "Comprehensive Income, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ComprehensiveIncomePolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ComputerEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Long lived, depreciable assets that are used in the creation, maintenance and utilization of information systems.",
        "label": "Computer Equipment [Member]"
       }
      }
     },
     "localname": "ComputerEquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ComputerSoftwareIntangibleAssetMember": {
     "auth_ref": [
      "r183",
      "r188",
      "r321"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Collection of computer programs and related data that provide instructions to a computer, for example, but not limited to, application program, control module or operating system, that perform one or more particular functions or tasks.",
        "label": "Computer Software, Intangible Asset [Member]"
       }
      }
     },
     "localname": "ComputerSoftwareIntangibleAssetMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConsolidationPolicyTextBlock": {
     "auth_ref": [
      "r98",
      "r330",
      "r333",
      "r334"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.",
        "label": "Consolidation, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ConsolidationPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConstructionInProgressGross": {
     "auth_ref": [
      "r197"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 5.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of structure or a modification to a structure under construction. Includes recently completed structures or modifications to structures that have not been placed into service.",
        "label": "Construction in progress"
       }
      }
     },
     "localname": "ConstructionInProgressGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CorporateDebtSecuritiesMember": {
     "auth_ref": [
      "r219",
      "r224",
      "r401"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Debt securities issued by domestic or foreign corporate business, banks and other entities with a promise of repayment.",
        "label": "Corporate Debt Securities [Member]"
       }
      }
     },
     "localname": "CorporateDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r72"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.",
        "label": "Cost of revenue",
        "terseLabel": "Cost of Goods and Services Sold, Total"
       }
      }
     },
     "localname": "CostOfGoodsAndServicesSold",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CostOfSalesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Primary financial statement caption encompassing cost of sales.",
        "label": "Cost of Sales [Member]"
       }
      }
     },
     "localname": "CostOfSalesMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax of increase (decrease) to equity or (increase) decrease to net assets, resulting from the cumulative effect adjustment of a new accounting principle applied in the period of adoption.",
        "label": "Revenue recognition transition adjustment",
        "terseLabel": "Cumulative Effect of New Accounting Principle in Period of Adoption"
       }
      }
     },
     "localname": "CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r297",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 5.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current federal tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Federal"
       }
      }
     },
     "localname": "CurrentFederalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r104",
      "r299"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Foreign"
       }
      }
     },
     "localname": "CurrentForeignTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Current:"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r297",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "State"
       }
      }
     },
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r320"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships.",
        "label": "Customer Relationships [Member]"
       }
      }
     },
     "localname": "CustomerRelationshipsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "auth_ref": [
      "r207"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.",
        "label": "Debt Disclosure [Text Block]"
       }
      }
     },
     "localname": "DebtDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r298",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred federal income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredFederalIncomeTaxExpenseBenefit",
        "verboseLabel": "Federal"
       }
      }
     },
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r298",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 6.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredForeignIncomeTaxExpenseBenefit",
        "verboseLabel": "Foreign"
       }
      }
     },
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r92",
      "r101",
      "r298",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 8.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Deferred"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r16",
      "r17",
      "r289",
      "r373",
      "r386"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences.",
        "label": "us-gaap_DeferredIncomeTaxLiabilities",
        "negatedTotalLabel": "Total deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r279",
      "r292"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.",
        "label": "Long-term deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r298",
      "r302"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit",
        "verboseLabel": "State"
       }
      }
     },
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 7.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from intangible assets including goodwill.",
        "label": "Intangible assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsGoodwillAndIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsInventory": {
     "auth_ref": [
      "r273",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 6.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.",
        "label": "Inventories"
       }
      }
     },
     "localname": "DeferredTaxAssetsInventory",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNet": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "us-gaap_DeferredTaxAssetsNet",
        "totalLabel": "Total deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Deferred tax assets:"
       }
      }
     },
     "localname": "DeferredTaxAssetsNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards": {
     "auth_ref": [
      "r272",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 4.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.",
        "label": "Net operating loss"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOther": {
     "auth_ref": [
      "r273",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 5.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other.",
        "label": "Other assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsOther",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r272",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.",
        "label": "Warrants and stock options"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities": {
     "auth_ref": [
      "r272",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.",
        "label": "Accrued expenses"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r291"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.",
        "label": "us-gaap_DeferredTaxAssetsValuationAllowance",
        "negatedLabel": "Less valuation allowance",
        "terseLabel": "Deferred Tax Assets, Valuation Allowance, Total"
       }
      }
     },
     "localname": "DeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilities": {
     "auth_ref": [
      "r279",
      "r292"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting.",
        "label": "us-gaap_DeferredTaxLiabilities",
        "negatedTotalLabel": "Net deferred tax liability"
       }
      }
     },
     "localname": "DeferredTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill": {
     "auth_ref": [
      "r273",
      "r295",
      "r296",
      "r327",
      "r328"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from goodwill.",
        "label": "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
        "negatedLabel": "Goodwill"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesLeasingArrangements": {
     "auth_ref": [
      "r273",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from leasing arrangements.",
        "label": "us-gaap_DeferredTaxLiabilitiesLeasingArrangements",
        "negatedTerseLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesLeasingArrangements",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Deferred tax liabilities:"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment": {
     "auth_ref": [
      "r273",
      "r295",
      "r296"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.",
        "label": "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment",
        "negatedLabel": "Depreciation"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of discretionary contributions made by an employer to a defined contribution plan.",
        "label": "us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount",
        "terseLabel": "Defined Contribution Plan, Employer Discretionary Contribution Amount"
       }
      }
     },
     "localname": "DefinedContributionPlanEmployerDiscretionaryContributionAmount",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan.",
        "label": "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent",
        "terseLabel": "Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent"
       }
      }
     },
     "localname": "DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r92",
      "r196"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.",
        "label": "us-gaap_Depreciation",
        "terseLabel": "Depreciation, Total"
       }
      }
     },
     "localname": "Depreciation",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "auth_ref": [
      "r92",
      "r129"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.",
        "label": "Depreciation and amortization",
        "terseLabel": "Depreciation and amortization"
       }
      }
     },
     "localname": "DepreciationDepletionAndAmortization",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisaggregationOfRevenueAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Revenue:"
       }
      }
     },
     "localname": "DisaggregationOfRevenueAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "auth_ref": [
      "r211"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.",
        "label": "Disaggregation of Revenue [Table Text Block]"
       }
      }
     },
     "localname": "DisaggregationOfRevenueTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r268"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for share-based payment arrangement.",
        "label": "Share-based Payment Arrangement [Text Block]"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfReclassificationAmountTextBlock": {
     "auth_ref": [
      "r75"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for any adjustments made during the period to avoid double counting in comprehensive income items displayed as part of net income that also had been displayed as part of other comprehensive income in that period or earlier periods. These adjustments include reclassifications to net income of items in accumulated comprehensive income, such as deferred gains or losses on qualifying hedges when hedged item reported in net income, holding gains or losses on available-for-sale securities transferred into trading category, unrealized holding gains or losses on debt securities transferred from held-to-maturity category into available-for-sale category and accumulated translation adjustment attributable to foreign subsidiary or investment in foreign entity upon sale or liquidation.",
        "label": "Disclosure of Reclassification Amount [Text Block]"
       }
      }
     },
     "localname": "DisclosureOfReclassificationAmountTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureTextBlockAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "us-gaap_DisclosureTextBlockAbstract",
        "terseLabel": "Notes to Financial Statements"
       }
      }
     },
     "localname": "DisclosureTextBlockAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DomesticPlanMember": {
     "auth_ref": [
      "r222"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Location of employer sponsoring plan, designed to provide retirement benefits, determined as principal place of business. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Domestic Plan [Member]"
       }
      }
     },
     "localname": "DomesticPlanMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Net income per share:"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r69",
      "r108",
      "r111",
      "r113",
      "r114",
      "r115",
      "r118",
      "r380",
      "r395"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.",
        "label": "Basic (in dollars per share)",
        "terseLabel": "Basic (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r69",
      "r108",
      "r111",
      "r113",
      "r114",
      "r115",
      "r118",
      "r380",
      "r395"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.",
        "label": "Diluted (in dollars per share)",
        "terseLabel": "Diluted (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r119"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for earnings per share.",
        "label": "Earnings Per Share [Text Block]"
       }
      }
     },
     "localname": "EarningsPerShareTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashAndCashEquivalents": {
     "auth_ref": [
      "r343"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) from the effect of exchange rate changes on cash and cash equivalent balances held in foreign currencies.",
        "label": "Effect of exchange rate changes on cash and cash equivalents"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashAndCashEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r103",
      "r280",
      "r281"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
        "terseLabel": "Effective Income Tax Rate Reconciliation, Percent, Total",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 10.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).",
        "label": "Federal tax statutory rate",
        "terseLabel": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 3.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax assets.",
        "label": "Valuation allowance against deferred tax assets"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 5.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": -1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to deduction for qualified production activity.",
        "label": "us-gaap_EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities",
        "negatedLabel": "Domestic manufacturing deduction"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 9.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.",
        "label": "Foreign rate differential"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 4.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.",
        "label": "Miscellaneous"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationOtherAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 7.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).",
        "label": "State tax (net of federal benefit)"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 8.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax contingencies. Includes, but not limited to, domestic tax contingency, foreign tax contingency, state and local tax contingency, and other contingencies.",
        "label": "Tax reserves"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxContingencies",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch": {
     "auth_ref": [
      "r280",
      "r281",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 2.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": -1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit.",
        "label": "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch",
        "negatedLabel": "Research and development credit"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxCreditsResearch",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r41"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued compensation"
       }
      }
     },
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "auth_ref": [
      "r261"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement.",
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
        "terseLabel": "Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r261"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
        "terseLabel": "Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [
      "r258"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time.",
        "label": "Share-based Payment Arrangement, Option [Member]"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tangible personal property used to produce goods and services.",
        "label": "Equipment [Member]"
       }
      }
     },
     "localname": "EquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r208"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc.",
        "label": "Equity Component [Domain]"
       }
      }
     },
     "localname": "EquityComponentDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": {
     "auth_ref": [
      "r336",
      "r337"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).",
        "label": "Fair Value, Assets Measured on Recurring Basis [Table Text Block]"
       }
      }
     },
     "localname": "FairValueAssetsMeasuredOnRecurringBasisTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r219",
      "r220",
      "r224",
      "r337",
      "r364"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient.",
        "label": "Fair Value Hierarchy and NAV [Axis]"
       }
      }
     },
     "localname": "FairValueByFairValueHierarchyLevelAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByMeasurementFrequencyAxis": {
     "auth_ref": [
      "r336",
      "r337",
      "r338",
      "r339",
      "r341"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by measurement frequency.",
        "label": "Measurement Frequency [Axis]"
       }
      }
     },
     "localname": "FairValueByMeasurementFrequencyAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "auth_ref": [
      "r340"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.",
        "label": "Fair Value Disclosures [Text Block]"
       }
      }
     },
     "localname": "FairValueDisclosuresTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r219",
      "r220",
      "r224",
      "r337",
      "r365"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date.",
        "label": "Fair Value, Inputs, Level 1 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel1Member",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "auth_ref": [
      "r219",
      "r220",
      "r224",
      "r337",
      "r366"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets.",
        "label": "Fair Value, Inputs, Level 2 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel2Member",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel3Member": {
     "auth_ref": [
      "r219",
      "r220",
      "r224",
      "r337",
      "r367"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.",
        "label": "Fair Value, Inputs, Level 3 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel3Member",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementFrequencyDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Measurement frequency.",
        "label": "Measurement Frequency [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementFrequencyDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value.",
        "label": "Fair Value Hierarchy and NAV [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementsFairValueHierarchyDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsRecurringMember": {
     "auth_ref": [
      "r340",
      "r341"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Frequent fair value measurement. Includes, but is not limited to, fair value adjustment for impairment of asset, liability or equity, frequently measured at fair value.",
        "label": "Fair Value, Recurring [Member]"
       }
      }
     },
     "localname": "FairValueMeasurementsRecurringMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r163",
      "r164",
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r170",
      "r171"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of financial instrument.",
        "label": "Financial Instrument [Axis]"
       }
      }
     },
     "localname": "FinancialInstrumentAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Useful Life (Year)",
        "terseLabel": "Finite-Lived Intangible Asset, Useful Life"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r189"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization",
        "negatedLabel": "Accumulated Amortization"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 1.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized after the fifth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r191"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 4.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the next fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
        "terseLabel": "2020"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r191"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 0.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fifth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r191"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 3.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fourth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r191"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 2.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the third fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
        "terseLabel": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r191"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 5.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the second fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
        "terseLabel": "2021"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r183",
      "r186",
      "r189",
      "r192",
      "r369"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by major type or class of finite-lived intangible assets.",
        "label": "Finite-Lived Intangible Assets by Major Class [Axis]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r189",
      "r369"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Gross"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r183",
      "r188"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company.",
        "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r189"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Net",
        "totalLabel": "Total estimated amortization expense"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Weighted average useful life remaining (Year)"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FinitelivedIntangibleAssetsAcquired1": {
     "auth_ref": [
      "r184"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.",
        "label": "us-gaap_FinitelivedIntangibleAssetsAcquired1",
        "terseLabel": "Finite-lived Intangible Assets Acquired"
       }
      }
     },
     "localname": "FinitelivedIntangibleAssetsAcquired1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "auth_ref": [
      "r98",
      "r342",
      "r345"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.",
        "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ForeignPlanMember": {
     "auth_ref": [
      "r222"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Location of employer sponsoring plan, designed to provide retirement benefits, not determined as principal place of business. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Foreign Plan [Member]"
       }
      }
     },
     "localname": "ForeignPlanMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnSaleOfBusiness": {
     "auth_ref": [
      "r92",
      "r332"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 13.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant.",
        "label": "us-gaap_GainLossOnSaleOfBusiness",
        "negatedLabel": "Gain on sale of businesses"
       }
      }
     },
     "localname": "GainLossOnSaleOfBusiness",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.",
        "label": "General and administrative"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpenseMember": {
     "auth_ref": [
      "r70"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Primary financial statement caption encompassing general and administrative expense.",
        "label": "General and Administrative Expense [Member]"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r177",
      "r178"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 4.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill",
        "periodEndLabel": "Goodwill, balance as of the end of the period",
        "periodStartLabel": "Goodwill, balance as of the beginning of the period",
        "terseLabel": "Goodwill, Ending Balance"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r179"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.",
        "label": "Goodwill acquired during the period"
       }
      }
     },
     "localname": "GoodwillAcquiredDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": {
     "auth_ref": [
      "r193"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for goodwill and intangible assets.",
        "label": "Goodwill and Intangible Assets Disclosure [Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r98",
      "r180"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.",
        "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy": {
     "auth_ref": [
      "r98",
      "r187"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined.",
        "label": "Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsIntangibleAssetsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r71"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.",
        "label": "us-gaap_GrossProfit",
        "totalLabel": "Gross profit"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecurities": {
     "auth_ref": [
      "r149",
      "r151"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Amortized Cost",
        "totalLabel": "Total marketable securities"
       }
      }
     },
     "localname": "HeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain": {
     "auth_ref": [
      "r153"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of accumulated unrecognized gain on investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Unrealized Gains"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss": {
     "auth_ref": [
      "r154"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of accumulated unrealized loss on investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss",
        "negatedLabel": "Unrealized Losses"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount": {
     "auth_ref": [
      "r156",
      "r383"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 0.0,
       "parentTag": "us-gaap_HeldToMaturitySecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in next fiscal year through fifth fiscal year following latest fiscal year. Excludes interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.",
        "label": "Due after one year through five years"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount": {
     "auth_ref": [
      "r155",
      "r382"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 1.0,
       "parentTag": "us-gaap_HeldToMaturitySecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in next fiscal year following latest fiscal year. Excludes interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.",
        "label": "Due in one year or less"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesFairValue": {
     "auth_ref": [
      "r152"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fair value of investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Fair Value"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesTextBlock": {
     "auth_ref": [
      "r157"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of information about investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Debt Securities, Held-to-maturity [Table Text Block]"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock": {
     "auth_ref": [
      "r98",
      "r194",
      "r202"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes goodwill and intangible assets.",
        "label": "Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r102"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
        "terseLabel": "Domestic"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r67",
      "r108",
      "r370",
      "r378",
      "r396"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
        "totalLabel": "Income before income taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r102"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r200"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by location in the income statement.",
        "label": "Income Statement Location [Axis]"
       }
      }
     },
     "localname": "IncomeStatementLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Location in the income statement.",
        "label": "Income Statement Location [Domain]"
       }
      }
     },
     "localname": "IncomeStatementLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r306"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.",
        "label": "Income Tax Disclosure [Text Block]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r101",
      "r130",
      "r303"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Provision for income taxes",
        "terseLabel": "Income Tax Expense (Benefit), Total",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "auth_ref": [
      "r65",
      "r98",
      "r277",
      "r278",
      "r287",
      "r288",
      "r293",
      "r304",
      "r403"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.",
        "label": "Income Tax, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "IncomeTaxPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r276",
      "r280",
      "r281"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 4.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.",
        "label": "Valuation Allowance"
       }
      }
     },
     "localname": "IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaid": {
     "auth_ref": [
      "r89",
      "r96"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income.",
        "label": "Cash paid for taxes"
       }
      }
     },
     "localname": "IncomeTaxesPaid",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesReceivable": {
     "auth_ref": [
      "r45",
      "r377",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying amount due within one year of the balance sheet date (or one operating cycle, if longer) from tax authorities as of the balance sheet date representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes.",
        "label": "Income taxes receivable"
       }
      }
     },
     "localname": "IncomeTaxesReceivable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 10.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.",
        "label": "Accounts payable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.",
        "label": "us-gaap_IncreaseDecreaseInAccountsReceivable",
        "negatedLabel": "Accounts receivable",
        "terseLabel": "Increase (Decrease) in Accounts Receivable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the period in the amount due for taxes based on the reporting entity's earnings or attributable to the entity's income earning process (business presence) within a given jurisdiction.",
        "label": "Income taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccruedIncomeTaxesPayable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.",
        "label": "us-gaap_IncreaseDecreaseInInventories",
        "negatedLabel": "Inventories",
        "terseLabel": "Increase (Decrease) in Inventories, Total"
       }
      }
     },
     "localname": "IncreaseDecreaseInInventories",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Changes in operating assets and liabilities, net of acquisitions:"
       }
      }
     },
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 9.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in operating liabilities classified as other.",
        "label": "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities",
        "terseLabel": "Accrued liabilities and other"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherOperatingLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 6.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other.",
        "label": "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
        "negatedLabel": "Prepaid expenses and other"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r112",
      "r117"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": 0.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.",
        "label": "Employee stock options and other (in shares)"
       }
      }
     },
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_InterestPaidNet": {
     "auth_ref": [
      "r86",
      "r88",
      "r96"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.",
        "label": "Cash paid for interest"
       }
      }
     },
     "localname": "InterestPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "auth_ref": [
      "r176"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.",
        "label": "Inventory Disclosure [Text Block]"
       }
      }
     },
     "localname": "InventoryDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryGross": {
     "auth_ref": [
      "r48"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details": {
       "order": 1.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.",
        "label": "us-gaap_InventoryGross",
        "totalLabel": "Total inventory"
       }
      }
     },
     "localname": "InventoryGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r3",
      "r48",
      "r172"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 2.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.",
        "label": "Inventory",
        "totalLabel": "Inventory, net of allowance"
       }
      }
     },
     "localname": "InventoryNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "auth_ref": [
      "r10",
      "r49",
      "r98",
      "r120",
      "r173",
      "r174"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.",
        "label": "Inventory, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "InventoryPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryRawMaterials": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details": {
       "order": 1.0,
       "parentTag": "us-gaap_InventoryGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before valuation and LIFO reserves of raw materials expected to be sold, or consumed within one year or operating cycle, if longer.",
        "label": "Raw materials"
       }
      }
     },
     "localname": "InventoryRawMaterials",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryValuationReserves": {
     "auth_ref": [
      "r48",
      "r105",
      "r172",
      "r175"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details": {
       "order": 0.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of valuation reserve for inventory.",
        "label": "us-gaap_InventoryValuationReserves",
        "negatedLabel": "Allowance for obsolescence"
       }
      }
     },
     "localname": "InventoryValuationReserves",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryWorkInProcess": {
     "auth_ref": [
      "r46"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details": {
       "order": 0.0,
       "parentTag": "us-gaap_InventoryGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before valuation and LIFO reserves of merchandise or goods in the production process expected to be completed within one year or operating cycle, if longer.",
        "label": "Work in process"
       }
      }
     },
     "localname": "InventoryWorkInProcess",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentTextBlock": {
     "auth_ref": [
      "r158",
      "r159",
      "r160",
      "r161"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for investment.",
        "label": "Investment [Text Block]"
       }
      }
     },
     "localname": "InvestmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.",
        "label": "Investments Classified by Contractual Maturity Date [Table Text Block]"
       }
      }
     },
     "localname": "InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Land": {
     "auth_ref": [
      "r8",
      "r35"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 4.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depletion of real estate held for productive use, excluding land held for sale.",
        "label": "Land"
       }
      }
     },
     "localname": "Land",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LandBuildingsAndImprovementsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Real estate held and additions or improvements to real estate held and structures used in the conduct of business.",
        "label": "Land, Buildings and Improvements [Member]"
       }
      }
     },
     "localname": "LandBuildingsAndImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseArrangementTypeAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by group of related lease arrangements. For example, but not limited to, leases grouped by facility or contractual terms.",
        "label": "Lease Arrangement, Type [Axis]"
       }
      }
     },
     "localname": "LeaseArrangementTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LeaseArrangementTypeDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Group of related lease arrangements. For example, but not limited to, leases grouped by facility or contractual terms.",
        "label": "Lease Arrangement, Type [Domain]"
       }
      }
     },
     "localname": "LeaseArrangementTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseCost": {
     "auth_ref": [
      "r358",
      "r360"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lease cost recognized by lessee for lease contract.",
        "label": "us-gaap_LeaseCost",
        "totalLabel": "Total lease cost"
       }
      }
     },
     "localname": "LeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LeaseholdImprovementsGross": {
     "auth_ref": [
      "r9",
      "r197"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depreciation of additions or improvements to assets held under a lease arrangement.",
        "label": "Leasehold improvements"
       }
      }
     },
     "localname": "LeaseholdImprovementsGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LegalMattersAndContingenciesTextBlock": {
     "auth_ref": [
      "r206"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for legal proceedings, legal contingencies, litigation, regulatory and environmental matters and other contingencies.",
        "label": "Legal Matters and Contingencies [Text Block]"
       }
      }
     },
     "localname": "LegalMattersAndContingenciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "auth_ref": [
      "r350"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee.",
        "label": "Lessee, Leases [Policy Text Block]"
       }
      }
     },
     "localname": "LesseeLeasesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r359"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.",
        "label": "Lessee, Operating Lease, Liability, Maturity [Table Text Block]"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease.",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
        "totalLabel": "Total future minimum lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due after fifth fiscal year following latest fiscal year.",
        "label": "After 2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 4.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in next fiscal year following latest fiscal year.",
        "label": "2020"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fifth fiscal year following latest fiscal year.",
        "label": "2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 3.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fourth fiscal year following latest fiscal year.",
        "label": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in third fiscal year following latest fiscal year.",
        "label": "2022"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r359"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 5.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in second fiscal year following latest fiscal year.",
        "label": "2021"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r359"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Less interest"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseTermOfContract": {
     "auth_ref": [
      "r351"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Term of lessee's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_LesseeOperatingLeaseTermOfContract",
        "terseLabel": "Lessee, Operating Lease, Term of Contract"
       }
      }
     },
     "localname": "LesseeOperatingLeaseTermOfContract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_LesseeOperatingLeasesTextBlock": {
     "auth_ref": [
      "r361"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease liability.",
        "label": "Lessee, Operating Leases [Text Block]"
       }
      }
     },
     "localname": "LesseeOperatingLeasesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r39"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.",
        "label": "us-gaap_Liabilities",
        "totalLabel": "Total liabilities"
       }
      }
     },
     "localname": "Liabilities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r25",
      "r375",
      "r391"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.",
        "label": "us-gaap_LiabilitiesAndStockholdersEquity",
        "totalLabel": "Total liabilities and shareholders' equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r42"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.",
        "label": "us-gaap_LiabilitiesCurrent",
        "totalLabel": "Total current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LineOfCredit": {
     "auth_ref": [
      "r15",
      "r374",
      "r387"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.",
        "label": "us-gaap_LineOfCredit",
        "terseLabel": "Long-term Line of Credit, Total"
       }
      }
     },
     "localname": "LineOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r135"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets.",
        "label": "Long-lived Assets by Geographic Areas [Table Text Block]"
       }
      }
     },
     "localname": "LongLivedAssetsByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_MachineryAndEquipmentGross": {
     "auth_ref": [
      "r9",
      "r197"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 2.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depreciation of tangible personal property used to produce goods and services, including, but is not limited to, tools, dies and molds, computer and office equipment.",
        "label": "Machinery and equipment"
       }
      }
     },
     "localname": "MachineryAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesCurrent": {
     "auth_ref": [
      "r5",
      "r40"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 4.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of investment in marketable security, classified as current.",
        "label": "Short-term marketable securities"
       }
      }
     },
     "localname": "MarketableSecuritiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesNoncurrent": {
     "auth_ref": [
      "r33"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 2.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of investment in marketable security, classified as noncurrent.",
        "label": "Long-term marketable securities"
       }
      }
     },
     "localname": "MarketableSecuritiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesPolicy": {
     "auth_ref": [
      "r384"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for investment classified as marketable security.",
        "label": "Marketable Securities, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "MarketableSecuritiesPolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_MarketingRelatedIntangibleAssetsMember": {
     "auth_ref": [
      "r317"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Marketing-related asset, including, but not limited to, internet domain name, newspaper mast head, and trademark.",
        "label": "Marketing-Related Intangible Assets [Member]"
       }
      }
     },
     "localname": "MarketingRelatedIntangibleAssetsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_MoneyMarketFundsAtCarryingValue": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
       "order": 0.0,
       "parentTag": "us-gaap_AssetsFairValueDisclosure",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.",
        "label": "Money market mutual funds"
       }
      }
     },
     "localname": "MoneyMarketFundsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r87"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.",
        "label": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
        "totalLabel": "Net cash used in financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r87"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.",
        "label": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
        "totalLabel": "Net cash used in investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r87",
      "r90",
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsPeriodIncreaseDecrease",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.",
        "label": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
        "totalLabel": "Net cash provided by operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r59",
      "r62",
      "r68",
      "r93",
      "r117",
      "r379",
      "r394"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.",
        "label": "Net income",
        "totalLabel": "Net income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.",
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NoncompeteAgreementsMember": {
     "auth_ref": [
      "r319"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Agreement in which one party agrees not to pursue a similar trade in competition with another party.",
        "label": "Noncompete Agreements [Member]"
       }
      }
     },
     "localname": "NoncompeteAgreementsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OperatingExpenses": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.",
        "label": "us-gaap_OperatingExpenses",
        "totalLabel": "Total operating expenses"
       }
      }
     },
     "localname": "OperatingExpenses",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingExpensesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Operating expenses"
       }
      }
     },
     "localname": "OperatingExpensesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The net result for the period of deducting operating expenses from operating revenues.",
        "label": "us-gaap_OperatingIncomeLoss",
        "terseLabel": "Income from operations",
        "totalLabel": "Income from operations"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseCost": {
     "auth_ref": [
      "r352",
      "r360"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details": {
       "order": 1.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.",
        "label": "Operating lease cost"
       }
      }
     },
     "localname": "OperatingLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r348"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease.",
        "label": "Present value of lease liabilities",
        "terseLabel": "Operating Lease, Liability, Total",
        "totalLabel": "Total operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r348"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.",
        "label": "Current operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r348"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.",
        "label": "Long-term operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r349",
      "r354"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.",
        "label": "Operating cash flows from operating leases"
       }
      }
     },
     "localname": "OperatingLeasePayments",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r347"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's right to use underlying asset under operating lease.",
        "label": "Operating lease assets",
        "terseLabel": "Operating Lease, Right-of-Use Asset"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r357",
      "r360"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average discount rate for operating lease calculated at point in time.",
        "label": "Weighted Average Discount Rate"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r356",
      "r360"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Weighted Average Remaining Lease Term (Years) (Year)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLossCarryforwards": {
     "auth_ref": [
      "r294"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.",
        "label": "us-gaap_OperatingLossCarryforwards",
        "terseLabel": "Operating Loss Carryforwards, Total"
       }
      }
     },
     "localname": "OperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingSegmentsMember": {
     "auth_ref": [
      "r128",
      "r132"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Identifies components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Operating Segments [Member]"
       }
      }
     },
     "localname": "OperatingSegmentsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "auth_ref": [
      "r1",
      "r335"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.",
        "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]"
       }
      }
     },
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r37"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of noncurrent assets classified as other.",
        "label": "Other long-term assets"
       }
      }
     },
     "localname": "OtherAssetsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax": {
     "auth_ref": [
      "r57",
      "r66"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax, before reclassification adjustments of other comprehensive income (loss).",
        "label": "Other comprehensive (loss) income before reclassifications"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r52",
      "r344"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.",
        "label": "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
        "terseLabel": "Foreign currency translation adjustments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r60",
      "r63",
      "r66",
      "r208"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of other comprehensive income (loss).",
        "label": "us-gaap_OtherComprehensiveIncomeLossNetOfTax",
        "totalLabel": "Net current-period other comprehensive (loss) income"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Other Comprehensive (Loss) Income, net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OtherIntangibleAssetsNet": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other.",
        "label": "Other intangible assets, net"
       }
      }
     },
     "localname": "OtherIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r43"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 2.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.",
        "label": "Other long-term liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNoncashIncomeExpense": {
     "auth_ref": [
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other.",
        "label": "us-gaap_OtherNoncashIncomeExpense",
        "negatedLabel": "Other"
       }
      }
     },
     "localname": "OtherNoncashIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r74"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other.",
        "label": "Other income, net"
       }
      }
     },
     "localname": "OtherNonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r83"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow to reacquire common stock during the period.",
        "label": "us-gaap_PaymentsForRepurchaseOfCommonStock",
        "negatedLabel": "Repurchases of common stock"
       }
      }
     },
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "auth_ref": [
      "r83"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.",
        "label": "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
        "negatedLabel": "Purchases of shares withheld for tax obligations"
       }
      }
     },
     "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r78",
      "r326"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.",
        "label": "us-gaap_PaymentsToAcquireBusinessesGross",
        "terseLabel": "Cash paid"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r78"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.",
        "label": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
        "negatedLabel": "Cash used for acquisitions, net of cash acquired",
        "terseLabel": "Payments to Acquire Businesses, Net of Cash Acquired, Total",
        "totalLabel": "Net cash consideration"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireHeldToMaturitySecurities": {
     "auth_ref": [
      "r77",
      "r150"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow through purchase of long-term held-to-maturity securities.",
        "label": "us-gaap_PaymentsToAcquireHeldToMaturitySecurities",
        "negatedLabel": "Purchases of marketable securities"
       }
      }
     },
     "localname": "PaymentsToAcquireHeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireOtherInvestments": {
     "auth_ref": [
      "r80"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow to acquire investments classified as other.",
        "label": "us-gaap_PaymentsToAcquireOtherInvestments",
        "negatedLabel": "Purchases of other assets and investments"
       }
      }
     },
     "localname": "PaymentsToAcquireOtherInvestments",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r79"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.",
        "label": "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment",
        "negatedLabel": "Purchases of property, equipment and other capital assets",
        "terseLabel": "Expenditures for additions to long-lived assets"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToEmployees": {
     "auth_ref": [
      "r85"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Payments of cash to employees, including wages and salaries, during the current period.",
        "label": "us-gaap_PaymentsToEmployees",
        "terseLabel": "Payments to Employees"
       }
      }
     },
     "localname": "PaymentsToEmployees",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r226"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for pension and other postretirement benefits.",
        "label": "Pension and Other Postretirement Benefits Disclosure [Text Block]"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PerformanceSharesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share-based payment arrangement awarded for meeting performance target.",
        "label": "Performance Shares [Member]"
       }
      }
     },
     "localname": "PerformanceSharesMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PolicyTextBlockAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "us-gaap_PolicyTextBlockAbstract",
        "terseLabel": "Accounting Policies"
       }
      }
     },
     "localname": "PolicyTextBlockAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r18"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.",
        "label": "Preferred stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "PreferredStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r18"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.",
        "label": "Preferred stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r18"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.",
        "label": "Preferred stock, shares issued (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "auth_ref": [
      "r18"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.",
        "label": "Preferred stock, shares outstanding (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValue": {
     "auth_ref": [
      "r18"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of December 31, 2019 and December 31, 2018, respectively"
       }
      }
     },
     "localname": "PreferredStockValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r6",
      "r30",
      "r31"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.",
        "label": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromDivestitureOfBusinesses": {
     "auth_ref": [
      "r76"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow associated with the amount received from the sale of a portion of the company's business, for example a segment, division, branch or other business, during the period.",
        "label": "Proceeds from sale of businesses"
       }
      }
     },
     "localname": "ProceedsFromDivestitureOfBusinesses",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfDebt": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow during the period from additional borrowings in aggregate debt. Includes proceeds from short-term and long-term debt.",
        "label": "Proceeds from issuance of debt"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfDebt",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": {
     "auth_ref": [
      "r81",
      "r263"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.",
        "label": "Proceeds from exercises of stock options"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow associated with the aggregate amount received by the entity through sale or maturity of marketable securities  (held-to-maturity or available-for-sale) during the period.",
        "label": "Proceeds from maturities of marketable securities"
       }
      }
     },
     "localname": "ProceedsFromSaleAndMaturityOfMarketableSecurities",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r36",
      "r199"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale.",
        "label": "Property, Plant and Equipment, Type [Axis]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "auth_ref": [
      "r203"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for long-lived, physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, accounting policies and methodology, roll forwards, depreciation, depletion and amortization expense, including composite depreciation, accumulated depreciation, depletion and amortization expense, useful lives and method used, income statement disclosures, assets held for sale and public utility disclosures.",
        "label": "Property, Plant and Equipment Disclosure [Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r35",
      "r197"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "us-gaap_PropertyPlantAndEquipmentGross",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r12",
      "r13",
      "r199",
      "r392"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 5.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property and equipment, net",
        "terseLabel": "Long-lived assets",
        "totalLabel": "Property and equipment, net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r34",
      "r98",
      "r199"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, basis of assets, depreciation and depletion methods used, including composite deprecation, estimated useful lives, capitalization policy, accounting treatment for costs incurred for repairs and maintenance, capitalized interest and the method it is calculated, disposals and impairments.",
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r12",
      "r199"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r12",
      "r197"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software.",
        "label": "Property, Plant and Equipment, Type [Domain]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "us-gaap_PropertyPlantAndEquipmentUsefulLife",
        "terseLabel": "Property, Plant and Equipment, Useful Life"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax": {
     "auth_ref": [
      "r57",
      "r58",
      "r66"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
       "order": 0.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTax",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss).",
        "label": "Amounts reclassified from accumulated other comprehensive income (loss)"
       }
      }
     },
     "localname": "ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RepaymentsOfLongTermDebt": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer.",
        "label": "us-gaap_RepaymentsOfLongTermDebt",
        "negatedLabel": "Payments on debt"
       }
      }
     },
     "localname": "RepaymentsOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r271",
      "r406"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.",
        "label": "Research and development",
        "terseLabel": "Research and Development Expense, Total"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpenseMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Primary financial statement caption in which the reported facts about research and development expense have been included.",
        "label": "Research and Development Expense [Member]"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpensePolicy": {
     "auth_ref": [
      "r98",
      "r271"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for costs it has incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process.",
        "label": "Research and Development Expense, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpensePolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Type of cash and cash equivalent. Cash is currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash and Cash Equivalents [Domain]"
       }
      }
     },
     "localname": "RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r116"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met.",
        "label": "Restricted Stock [Member]"
       }
      }
     },
     "localname": "RestrictedStockMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r22",
      "r209",
      "r390"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained earnings"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings [Member]"
       }
      }
     },
     "localname": "RetainedEarningsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationAxis": {
     "auth_ref": [
      "r222",
      "r223"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Axis]"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationDomain": {
     "auth_ref": [
      "r222",
      "r223"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Domain]"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanTypeAxis": {
     "auth_ref": [
      "r217",
      "r218",
      "r221",
      "r222",
      "r225"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of retirement benefit plan. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement.",
        "label": "Retirement Plan Type [Axis]"
       }
      }
     },
     "localname": "RetirementPlanTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanTypeDomain": {
     "auth_ref": [
      "r217",
      "r218",
      "r221",
      "r222",
      "r225"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Type of plan designed to provide participants with retirement benefits. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement.",
        "label": "Retirement Plan Type [Domain]"
       }
      }
     },
     "localname": "RetirementPlanTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "auth_ref": [
      "r210",
      "r211"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.",
        "label": "Revenue",
        "terseLabel": "Revenue from Contract with Customer, Including Assessed Tax"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerIncludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "auth_ref": [
      "r216"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.",
        "label": "Revenue from Contract with Customer [Text Block]"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r134"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.",
        "label": "Revenue from External Customers by Geographic Areas [Table Text Block]"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRecognitionPolicyTextBlock": {
     "auth_ref": [
      "r99",
      "r100"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.",
        "label": "Revenue [Policy Text Block]"
       }
      }
     },
     "localname": "RevenueRecognitionPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenuesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statements of Operations:"
       }
      }
     },
     "localname": "RevenuesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "auth_ref": [
      "r355",
      "r360"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability.",
        "label": "Lease assets obtained in exchange for new operating lease liabilities"
       }
      }
     },
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock": {
     "auth_ref": [
      "r259"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of cost recognized for award under share-based payment arrangement by plan. Includes, but is not limited to, related tax benefit.",
        "label": "Share-based Payment Arrangement, Cost by Plan [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r299"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.",
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r51"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of components of comprehensive income (loss). Includes, but is not limited to, foreign currency translation adjustments, foreign currency transactions  designated as economic hedges of a net investment in foreign entity, gain (loss) and prior service cost (credit) for pension plans and other postretirement benefit plans.",
        "label": "Comprehensive Income (Loss) [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfComprehensiveIncomeLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r292"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.",
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r117"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.",
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "auth_ref": [
      "r280"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.",
        "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "auth_ref": [
      "r183",
      "r188"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.",
        "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r180",
      "r181"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.",
        "label": "Schedule of Goodwill [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock": {
     "auth_ref": [
      "r102"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of income before income tax between domestic and foreign jurisdictions.",
        "label": "Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r10",
      "r27",
      "r28",
      "r29"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.",
        "label": "Schedule of Inventory, Current [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfInventoryCurrentTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock": {
     "auth_ref": [
      "r241"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the changes in outstanding nonvested performance-based units.",
        "label": "Schedule of Nonvested Performance-based Units Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": {
     "auth_ref": [
      "r316"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree.",
        "label": "Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock": {
     "auth_ref": [
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms.",
        "label": "Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r235",
      "r247",
      "r250"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.",
        "label": "Share-based Payment Arrangement, Option, Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r253"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r253"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.",
        "label": "Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock": {
     "auth_ref": [
      "r286",
      "r300"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the change in unrecognized tax benefits.",
        "label": "Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r188"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.",
        "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Segments [Domain]"
       }
      }
     },
     "localname": "SegmentDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r137"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.",
        "label": "Segment Reporting Disclosure [Text Block]"
       }
      }
     },
     "localname": "SegmentReportingDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingAndMarketingExpense": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services.",
        "label": "Marketing and sales"
       }
      }
     },
     "localname": "SellingAndMarketingExpense",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SellingAndMarketingExpenseMember": {
     "auth_ref": [
      "r70"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Primary financial statement caption encompassing selling and marketing expense.",
        "label": "Selling and Marketing Expense [Member]"
       }
      }
     },
     "localname": "SellingAndMarketingExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 11.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of noncash expense for share-based payment arrangement.",
        "label": "us-gaap_ShareBasedCompensation",
        "terseLabel": "Share-based Payment Arrangement, Noncash Expense, Total"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r231"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate": {
     "auth_ref": [
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Discount rate from fair value on offering date that participants pay for shares.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r240"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
        "negatedTerseLabel": "Forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r245"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
        "terseLabel": "Forfeited, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Forfeited, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r243"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
        "terseLabel": "Granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r243"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
        "terseLabel": "Granted, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Granted, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r242"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
        "periodEndLabel": "Restricted stock (in shares)",
        "periodStartLabel": "Restricted stock (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r242"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
        "periodEndLabel": "Restricted stock, weighted-average grant date fair value (in dollars per share)",
        "periodStartLabel": "Restricted stock, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r244"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
        "negatedTerseLabel": "Restrictions lapsed (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r244"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
        "terseLabel": "Restrictions lapsed, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Restrictions lapsed, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r256"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.",
        "label": "Expected dividend yield",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Dividend Rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r255"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.",
        "label": "Expected volatility"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r257"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares.",
        "label": "Risk-free interest rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r238"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.",
        "label": "Options exercisable (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r238"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.",
        "label": "Options exercisable, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": {
     "auth_ref": [
      "r249"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "auth_ref": [
      "r240"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
        "negatedLabel": "Cancelled (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Gross number of share options (or share units) granted during the period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
        "terseLabel": "Granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r248"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.",
        "label": "Weighted average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r262"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r237",
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of options outstanding, including both vested and non-vested options.",
        "label": "Options outstanding, vested and expected to vest, number outstanding (in shares)",
        "periodEndLabel": "Options outstanding (in shares)",
        "periodStartLabel": "Options outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r236"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.",
        "label": "Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)",
        "periodEndLabel": "Options outstanding, weighted-average exercise price (in dollars per share)",
        "periodStartLabel": "Options outstanding, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r228",
      "r232"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares.",
        "label": "Exercised, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.",
        "label": "Cancelled, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.",
        "label": "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
        "terseLabel": "Granted, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis": {
     "auth_ref": [
      "r252"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by range of option prices pertaining to options granted.",
        "label": "Exercise Price Range [Axis]"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain": {
     "auth_ref": [
      "r258"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Supplementary information on outstanding and exercisable share awards as of the balance sheet date which stratifies outstanding options by ranges of exercise prices.",
        "label": "Exercise Price Range [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit": {
     "auth_ref": [
      "r258"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The floor of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Range of exercise prices, lower limit (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions": {
     "auth_ref": [
      "r246"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of shares reserved for issuance pertaining to the outstanding exercisable stock options as of the balance sheet date in the customized range of exercise prices for which the market and performance vesting condition has been satisfied.",
        "label": "Options exercisable, number exercisable (in shares)",
        "periodEndLabel": "Performance stock (in shares)",
        "periodStartLabel": "Performance stock (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit": {
     "auth_ref": [
      "r258"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The ceiling of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Range of exercise prices, upper limit (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r254",
      "r264"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Expected life (Year)",
        "verboseLabel": "Expected life (months) (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1": {
     "auth_ref": [
      "r262"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Intrinsic Value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r262"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r251"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r251"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1": {
     "auth_ref": [
      "r234"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fair value of options vested. Excludes equity instruments other than options, for example, but not limited to, share units, stock appreciation rights, restricted stock.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested in Period, Fair Value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Purchase price of common stock expressed as a percentage of its fair value.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1": {
     "auth_ref": [
      "r238"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average exercise price as of the balance sheet date for those equity-based payment arrangements exercisable and outstanding.",
        "label": "Options exercisable, weighted average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r106"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for all significant accounting policies of the reporting entity.",
        "label": "Significant Accounting Policies [Text Block]"
       }
      }
     },
     "localname": "SignificantAccountingPoliciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StatementBusinessSegmentsAxis": {
     "auth_ref": [
      "r0",
      "r131",
      "r180",
      "r201",
      "r204",
      "r205",
      "r397"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by business segments.",
        "label": "Segments [Axis]"
       }
      }
     },
     "localname": "StatementBusinessSegmentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r44",
      "r208"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Equity Components [Axis]"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Statement [Line Items]"
       }
      }
     },
     "localname": "StatementLineItems",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables",
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "localname": "StatementOfCashFlowsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "localname": "StatementOfFinancialPositionAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "localname": "StatementOfStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed.",
        "label": "Statement [Table]"
       }
      }
     },
     "localname": "StatementTable",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-inventory-details",
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations",
      "http://www.protolabs.com/20191231/role/statement-note-11-financing-obligations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans",
      "http://www.protolabs.com/20191231/role/statement-note-12-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
      "http://www.protolabs.com/20191231/role/statement-note-17-litigation",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-unaudited-pro-forma-information-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables",
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesAcquisitions": {
     "auth_ref": [
      "r18",
      "r19",
      "r209"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares of stock issued during the period pursuant to acquisitions.",
        "label": "Common shares issued for RAPID acquisition (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r18",
      "r19",
      "r208",
      "r209"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).",
        "label": "Common shares issued on exercise of options and other (in shares)",
        "terseLabel": "Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r18",
      "r19",
      "r208",
      "r209",
      "r239"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of share options (or share units) exercised during the current period.",
        "label": "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised",
        "negatedLabel": "Exercised (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueAcquisitions": {
     "auth_ref": [
      "r44",
      "r208",
      "r209"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of stock issued pursuant to acquisitions during the period.",
        "label": "Common shares issued for RAPID acquisition"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r44",
      "r208",
      "r209"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of stock issued as a result of the exercise of stock options.",
        "label": "Common shares issued on exercise of options and other"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": {
     "auth_ref": [
      "r18",
      "r19",
      "r208",
      "r209"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares that have been repurchased and retired during the period.",
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares",
        "negatedLabel": "Repurchases of Common Stock (in shares)"
       }
      }
     },
     "localname": "StockRepurchasedAndRetiredDuringPeriodShares",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": {
     "auth_ref": [
      "r18",
      "r19",
      "r208",
      "r209"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).",
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue",
        "negatedLabel": "Repurchases of Common Stock"
       }
      }
     },
     "localname": "StockRepurchasedAndRetiredDuringPeriodValue",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r19",
      "r23",
      "r24",
      "r147"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.",
        "label": "us-gaap_StockholdersEquity",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "totalLabel": "Total shareholders' equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Shareholders' equity"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventsTextBlock": {
     "auth_ref": [
      "r363"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.",
        "label": "Subsequent Events [Text Block]"
       }
      }
     },
     "localname": "SubsequentEventsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-19-subsequent-events"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SupplementalCashFlowInformationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Supplemental cash flow disclosure"
       }
      }
     },
     "localname": "SupplementalCashFlowInformationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "us-gaap_TableTextBlock",
        "terseLabel": "Notes Tables"
       }
      }
     },
     "localname": "TableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-10-inventory-tables",
      "http://www.protolabs.com/20191231/role/statement-note-13-stockbased-compensation-tables",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-tables",
      "http://www.protolabs.com/20191231/role/statement-note-15-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-tables",
      "http://www.protolabs.com/20191231/role/statement-note-18-segment-reporting-tables",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-tables",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20191231/role/statement-note-7-fair-value-measurements-tables",
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-tables",
      "http://www.protolabs.com/20191231/role/statement-note-9-property-and-equipment-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TradeAndOtherAccountsReceivablePolicy": {
     "auth_ref": [
      "r141",
      "r142",
      "r143",
      "r144",
      "r146",
      "r148"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for accounts receivable.",
        "label": "Accounts Receivable [Policy Text Block]"
       }
      }
     },
     "localname": "TradeAndOtherAccountsReceivablePolicy",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TradeNamesMember": {
     "auth_ref": [
      "r318"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Rights acquired through registration of a business name to gain or protect exclusive use thereof.",
        "label": "Trade Names [Member]"
       }
      }
     },
     "localname": "TradeNamesMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations",
      "http://www.protolabs.com/20191231/role/statement-note-5-business-combinations-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TradeSecretsMember": {
     "auth_ref": [
      "r322"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information generally known to only a limited number of the entity's employees, such as a formula, pattern, machine, technology, and production process that may give an entity a competitive advantage.",
        "label": "Trade Secrets [Member]"
       }
      }
     },
     "localname": "TradeSecretsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-6-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r368"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms.",
        "label": "Financial Instruments [Domain]"
       }
      }
     },
     "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfAdoptionMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Adoption and early adoption of sources of change to generally accepted accounting principles (GAAP) in the United States. The FASB released the FASB Accounting Standards Codification as the authoritative source of literature effective for interim and annual periods ending after September 15, 2009. As part of the Codification process, the FASB issues Accounting Standards Updates to amend the Codification but otherwise the Accounting Standards Updates are not authoritative in their own right. All previous accounting standards (such as FASB Statements of Financial Accounting Standards, FASB Interpretations, FASB Staff Positions, Emerging Issues Task Force Consensuses, other pronouncements of the FASB or other designated bodies, or other forms of GAAP are considered accounting pronouncements) were superseded upon the adoption of the Codification. For an interim period, references to the superseded standards are included to help users transition from the previous accounting hierarchy and will be removed from future versions of this taxonomy.",
        "label": "Type of Adoption [Domain]"
       }
      }
     },
     "localname": "TypeOfAdoptionMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases",
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20191231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20191231/role/statement-note-3-revenue-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": {
     "auth_ref": [
      "r219",
      "r376"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Debentures, notes, and other debt securities issued by US government agencies, for example, but not limited to, Government National Mortgage Association (GNMA or Ginnie Mae). Excludes US treasury securities and debt issued by government-sponsored Enterprises (GSEs), for example, but is not limited to, Federal Home Loan Mortgage Corporation (FHLMC or Freddie Mac), Federal National Mortgage Association (FNMA or Fannie Mae), and the Federal Home Loan Bank (FHLB).",
        "label": "US Government Agencies Debt Securities [Member]"
       }
      }
     },
     "localname": "USGovernmentAgenciesDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USStatesAndPoliticalSubdivisionsMember": {
     "auth_ref": [
      "r219",
      "r401"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Bonds or similar securities issued by state, city, or local US governments or the agencies operated by state, city, or local governments. Debt securities issued by state governments may include bond issuances of US state authorities including, for example, but not limited to, housing authorities, dormitory authorities, and general obligations while debt securities issued by political subdivisions of US states would include, for example, debt issuances by county, borough, city, or municipal governments.",
        "label": "US States and Political Subdivisions Debt Securities [Member]"
       }
      }
     },
     "localname": "USStatesAndPoliticalSubdivisionsMember",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-8-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UndistributedEarningsOfForeignSubsidiaries": {
     "auth_ref": [
      "r274",
      "r305",
      "r385",
      "r400"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile.",
        "label": "us-gaap_UndistributedEarningsOfForeignSubsidiaries",
        "terseLabel": "Undistributed Earnings of Foreign Subsidiaries"
       }
      }
     },
     "localname": "UndistributedEarningsOfForeignSubsidiaries",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r275",
      "r282"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of unrecognized tax benefits.",
        "label": "us-gaap_UnrecognizedTaxBenefits",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "terseLabel": "Unrecognized Tax Benefits, Ending Balance"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefits",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-details-textual",
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions": {
     "auth_ref": [
      "r284"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.",
        "label": "Additions for tax positions of current year"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r283"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Additions for tax positions of prior years"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations": {
     "auth_ref": [
      "r285"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.",
        "label": "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations",
        "negatedLabel": "Decrease related to expiration of statutes of limitations"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-16-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UseOfEstimates": {
     "auth_ref": [
      "r121",
      "r122",
      "r123",
      "r124",
      "r125",
      "r126",
      "r127"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.",
        "label": "Use of Estimates, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "UseOfEstimates",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_VariableLeaseCost": {
     "auth_ref": [
      "r353",
      "r360"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details": {
       "order": 0.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.",
        "label": "Variable lease cost"
       }
      }
     },
     "localname": "VariableLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-note-14-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r110",
      "r115"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.",
        "label": "Diluted (in shares)",
        "totalLabel": "Diluted - weighted-average shares outstanding: (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r109",
      "r115"
     ],
     "calculation": {
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": 1.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.",
        "label": "Basic (in shares)",
        "terseLabel": "Basic - weighted-average shares outstanding: (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20191231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Shares used to compute net income per share:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20191231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    }
   },
   "unitCount": 7
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "205",
   "URI": "http://asc.fasb.org/extlink&oid=109222650&loc=d3e1361-107760"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "205",
   "URI": "http://asc.fasb.org/topic&trid=2122149"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6361739&loc=d3e7789-107766"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(1)(i))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(2))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e24092-122690"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=d3e1448-109256"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=d3e1505-109256"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=d3e1252-109256"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=d3e1500-109256"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=SL5780133-109256"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117326831&loc=d3e1337-109256"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=117327953&loc=d3e4984-109258"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=116846552&loc=d3e543-108305"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6161-108592"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6191-108592"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6061-108592"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6132-108592"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6143-108592"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8933-108599"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9031-108599"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9038-108599"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "b",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9038-108599"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9038-108599"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "http://asc.fasb.org/topic&trid=2134510"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118952595&loc=d3e4647-111522"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118952595&loc=d3e4428-111522"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(20))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118952595&loc=d3e4531-111522"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=d3e4975-111524"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=SL6953423-111524"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=d3e5212-111524"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=d3e5033-111524"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=d3e5074-111524"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=118936363&loc=d3e5093-111524"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=27010918&loc=d3e74512-122707"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84159169&loc=d3e10133-111534"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118954083&loc=d3e26610-111562"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(22))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118954083&loc=d3e26853-111562"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=118939692&loc=d3e27232-111563"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "http://asc.fasb.org/topic&trid=2196928"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "321",
   "URI": "http://asc.fasb.org/topic&trid=75115024"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "323",
   "URI": "http://asc.fasb.org/topic&trid=2196965"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "325",
   "URI": "http://asc.fasb.org/topic&trid=2197064"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=118955202&loc=SL82895884-210446"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=119407570&loc=SL82919244-210447"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=119407570&loc=SL82919249-210447"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=119407570&loc=SL82919253-210447"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=119407570&loc=SL82919258-210447"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=119407570&loc=SL82919230-210447"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=118955579&loc=SL82922888-210455"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=118955579&loc=SL82922895-210455"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=118955579&loc=SL82922900-210455"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=118942371&loc=SL82922954-210456"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116846819&loc=d3e3927-108312"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4492-108314"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4556-108314"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.BB)",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=27011343&loc=d3e100047-122729"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "http://asc.fasb.org/topic&trid=2126998"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=77989000&loc=SL49117168-202975"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13816-109267"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13816-109267"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13854-109267"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=6388964&loc=d3e16225-109274"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(2)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "350",
   "URI": "http://asc.fasb.org/topic&trid=2144416"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226317&loc=d3e202-110218"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226348&loc=d3e2420-110228"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6676-107765"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.CC)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=27011434&loc=d3e125687-122742"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "360",
   "URI": "http://asc.fasb.org/topic&trid=2155823"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "450",
   "URI": "http://asc.fasb.org/topic&trid=2127136"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "470",
   "URI": "http://asc.fasb.org/topic&trid=2208564"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21463-112644"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=27012166&loc=d3e187085-122770"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=118956577&loc=SL49130543-203045"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=118956577&loc=SL49130545-203045"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=118956577&loc=SL49130549-203045"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=118944142&loc=SL49130690-203046-203046"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=118944142&loc=SL49130690-203046-203046"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "http://asc.fasb.org/topic&trid=49130388"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "15",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "712",
   "URI": "http://asc.fasb.org/extlink&oid=6410066&loc=d3e79218-111664"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "15",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "712",
   "URI": "http://asc.fasb.org/extlink&oid=6410066&loc=d3e79218-111664"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2410-114920"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2439-114920"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118257860&loc=d3e4179-114921"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "70",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=49170846&loc=d3e28014-114942"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "http://asc.fasb.org/topic&trid=2235017"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116855982&loc=d3e4534-113899"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5047-113901"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5047-113901"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5047-113901"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b),(f(1))",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(4)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=d3e5070-113901"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=116856206&loc=SL79508275-113901"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=115993241&loc=d3e301413-122809"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.F)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=115993241&loc=d3e301413-122809"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=118258462&loc=d3e11149-113907"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=118258462&loc=d3e11178-113907"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(a)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(b)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "730",
   "URI": "http://asc.fasb.org/extlink&oid=6420194&loc=d3e21568-108373"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=117330534&loc=d3e28680-109314"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=117330534&loc=d3e28680-109314"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=117330534&loc=d3e28200-109314"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116821951&loc=SL37586934-109318"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116821951&loc=d3e32123-109318"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116821951&loc=d3e32247-109318"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116821951&loc=d3e32280-109318"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116821951&loc=d3e31931-109318"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32687-109319"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32698-109319"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32809-109319"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32840-109319"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(c))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b),(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32847-109319"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32559-109319"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32621-109319"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32632-109319"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6676-107765"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(7))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "217",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=117331294&loc=d3e36027-109320"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116825942&loc=d3e330036-122817"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116825942&loc=d3e330036-122817"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=109238882&loc=d3e38679-109324"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "30",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=65884525&loc=d3e40913-109327"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Subparagraph": "(a)-(d)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6909625&loc=d3e227-128457"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116868678&loc=d3e1043-128460"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(8))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(2)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(3)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r313": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1486-128463"
  },
  "r314": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "37",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116868840&loc=d3e2207-128464"
  },
  "r315": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116869197&loc=d3e4845-128472"
  },
  "r316": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116869197&loc=d3e4845-128472"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5227-128473"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5263-128473"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5263-128473"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.1)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5333-128473"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5504-128473"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5504-128473"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6578-128477"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6613-128477"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "740",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=117412053&loc=d3e9972-128506"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "740",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=117412053&loc=d3e9979-128506"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "http://asc.fasb.org/topic&trid=2303972"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.12)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=d3e5614-111684"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4582445-111684"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3A-02)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116822174&loc=d3e355033-122828"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3A-03)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116822174&loc=d3e355100-122828"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "810",
   "URI": "http://asc.fasb.org/topic&trid=2197479"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=SL6742756-110258"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450222&loc=d3e30840-110895"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=98513438&loc=d3e33268-110906"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(b,c)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=119364159&loc=SL77916155-209984"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918627-209977"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918627-209977"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918643-209977"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918666-209980"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918673-209980"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(2)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918701-209980"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.14)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888399&loc=SL77918982-209971"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888251"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "850",
   "URI": "http://asc.fasb.org/extlink&oid=6457730&loc=d3e39599-107864"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "855",
   "URI": "http://asc.fasb.org/topic&trid=2122774"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=118948506&loc=d3e107207-111719"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=118948506&loc=d3e107207-111719"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=118948506&loc=d3e107207-111719"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=118948506&loc=d3e107207-111719"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "http://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.17)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "http://asc.fasb.org/extlink&oid=68072869&loc=d3e41242-110953"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(16))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(6)(a)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.10)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(15))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=116637391&loc=SL114874048-224260"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=116637391&loc=SL114874048-224260"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=116637391&loc=SL114874048-224260"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Subparagraph": "b.",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6477933&loc=d3e60009-112784"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(a)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=75019621&loc=d3e62586-112803"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=75019621&loc=d3e62586-112803"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=75019621&loc=d3e62652-112803"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6479915&loc=d3e66715-112838"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(15)(b)(2))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(16))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(1))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r390": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03.5(c))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=119400593&loc=d3e572229-122910"
  },
  "r394": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116637232&loc=SL114874131-224263"
  },
  "r395": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(19))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116637232&loc=SL114874131-224263"
  },
  "r396": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116637232&loc=SL114874131-224263"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4H",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116884468&loc=SL65671331-158438"
  },
  "r398": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=117419784&loc=SL117783719-158441"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=117419784&loc=SL117783719-158441"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6676-107765"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.2)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6487024&loc=d3e29054-158556"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=117420044&loc=d3e19393-158473"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "http://asc.fasb.org/extlink&oid=6589523&loc=d3e617274-123014"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491622&loc=d3e9504-115650"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=6590653&loc=d3e638233-123024"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r407": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b"
  },
  "r408": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r409": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1-"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r410": {
   "Name": "Forms 10-K, 20-F, 40-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "15",
   "Subsection": "d-1"
  },
  "r411": {
   "Name": "Regulation 12B",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r412": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.3(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6676-107765"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.9)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=d3e526-108580"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669646-108580"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a),(b),(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669646-108580"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669646-108580"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=d3e637-108580"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=d3e681-108580"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669686-108580"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL34724394-108580"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669619-108580"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6676-107765"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669619-108580"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669619-108580"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669625-108580"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=SL7669625-108580"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118930883&loc=d3e557-108580"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116657188&loc=SL116659661-227067"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=118951672&loc=d3e1436-108581"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(10))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(21))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6801-107765"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(4))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2(a),(d))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116634182&loc=SL114868664-224227"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "220",
   "URI": "http://asc.fasb.org/topic&trid=2134417"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3179-108585"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3213-108585"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3213-108585"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3213-108585"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6812-107765"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3213-108585"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3255-108585"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3255-108585"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3291-108585"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3291-108585"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3367-108585"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3367-108585"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3521-108585"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3536-108585"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3536-108585"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=118951113&loc=d3e6812-107765"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3536-108585"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3602-108585"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3602-108585"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3602-108585"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=118932676&loc=d3e3044-108585"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=98513485&loc=d3e4273-108586"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=98513485&loc=d3e4297-108586"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18726-107790"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18780-107790"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  }
 },
 "version": "2.1"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>101
<FILENAME>R77.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6811050000">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 16 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsNetAbstract', window );"><strong>Deferred tax assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities', window );">Accrued expenses</a></td>
<td class="nump">$ 1,362<span></span>
</td>
<td class="nump">$ 931<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_DeferredTaxAssetsRightOfUseLeases', window );">Leases</a></td>
<td class="nump">3,337<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost', window );">Warrants and stock options</a></td>
<td class="nump">3,325<span></span>
</td>
<td class="nump">2,908<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets', window );">Intangible assets</a></td>
<td class="nump">1,171<span></span>
</td>
<td class="nump">748<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsInventory', window );">Inventories</a></td>
<td class="nump">169<span></span>
</td>
<td class="nump">154<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsOther', window );">Other assets</a></td>
<td class="nump">1,765<span></span>
</td>
<td class="nump">666<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards', window );">Net operating loss</a></td>
<td class="nump">6,513<span></span>
</td>
<td class="nump">6,605<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Less valuation allowance</a></td>
<td class="num">(8,248)<span></span>
</td>
<td class="num">(6,900)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsNet', window );">Total deferred tax assets</a></td>
<td class="nump">9,394<span></span>
</td>
<td class="nump">5,112<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesNetAbstract', window );"><strong>Deferred tax liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment', window );">Depreciation</a></td>
<td class="num">(26,750)<span></span>
</td>
<td class="num">(21,788)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill', window );">Goodwill</a></td>
<td class="num">(5,590)<span></span>
</td>
<td class="num">(3,486)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesLeasingArrangements', window );">Leases</a></td>
<td class="num">(3,337)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Total deferred tax liabilities</a></td>
<td class="num">(35,677)<span></span>
</td>
<td class="num">(25,274)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilities', window );">Net deferred tax liability</a></td>
<td class="num">$ (26,283)<span></span>
</td>
<td class="num">$ (20,162)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_DeferredTaxAssetsRightOfUseLeases">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_DeferredTaxAssetsRightOfUseLeases</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(15)(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=119400593&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=6876686&amp;loc=d3e534808-122878<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=6877327&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from intangible assets including goodwill.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsInventory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsInventory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b),(c)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsNetAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsOperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=d3e31931-109318<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences from goodwill.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 740<br> -Section 25<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=117412053&amp;loc=d3e9972-128506<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 740<br> -Section 25<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=117412053&amp;loc=d3e9979-128506<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesLeasingArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences from leasing arrangements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesLeasingArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesNetAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28680-109314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>102
<FILENAME>prlb20191231_10k_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:country="http://xbrl.sec.gov/country/2017-01-31"
  xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:prlb="http://www.protolabs.com/20191231"
  xmlns:srt="http://fasb.org/srt/2019-01-31"
  xmlns:thunderdome="http://www.RDGFilings.com"
  xmlns:us-gaap="http://fasb.org/us-gaap/2019-01-31"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink">
    <link:schemaRef xlink:href="prlb-20191231.xsd" xlink:type="simple"/>
    <context id="d_2019-01-01_2019-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2019-06-30</instant>
        </period>
    </context>
    <context id="i_2020-02-14">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2020-02-14</instant>
        </period>
    </context>
    <context id="i_2019-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="i_2016-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="i_2016-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="i_2016-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-11-30</endDate>
        </period>
    </context>
    <context id="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-01</instant>
        </period>
    </context>
    <context id="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-01-01</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-11-30</instant>
        </period>
    </context>
    <context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-11-30</instant>
        </period>
    </context>
    <context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-11-30</endDate>
        </period>
    </context>
    <context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-11-30</instant>
        </period>
    </context>
    <context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-11-30</endDate>
        </period>
    </context>
    <context id="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-11-30</instant>
        </period>
    </context>
    <context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-11-30</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2016-01-01</startDate>
            <endDate>2016-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_TitleOfIndividualAxis-EmployeesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">prlb:EmployeesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-11-30</startDate>
            <endDate>2017-11-30</endDate>
        </period>
    </context>
    <context id="i_2017-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeSecretsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_AwardTypeAxis-ESPPMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-ESPPMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2016-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LeaseArrangementTypeAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LeaseArrangementTypeAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-10-01_2019-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2019-10-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:RapidMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="Share">
        <measure>shares</measure>
    </unit>
    <unit id="NonApplicable">
        <measure>thunderdome:item</measure>
    </unit>
    <unit id="USDPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="Year">
        <measure>utr:Y</measure>
    </unit>
    <unit id="Month">
        <measure>utr:M</measure>
    </unit>
    <unit id="Pure">
        <measure>pure</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="d_2019-01-01_2019-12-31"
      id="thunderdome-EntityCentralIndexKey">0001443669</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2019-01-01_2019-12-31"
      id="thunderdome-EntityRegistrantName">Proto Labs Inc</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2019-01-01_2019-12-31">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2019-01-01_2019-12-31">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2019-01-01_2019-12-31">FY</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2019-01-01_2019-12-31">2019</dei:DocumentFiscalYearFocus>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember"
      id="c56002302">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"
      decimals="-5"
      id="c56002377"
      unitRef="USD">13100000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LineOfCredit
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002853"
      unitRef="USD">0</us-gaap:LineOfCredit>
    <prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      id="c56002857">P3M</prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002864"
      unitRef="USD">300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002866"
      unitRef="USD">300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <prlb:EmployeeStockPurchasePlanOfferingPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      id="c56002891">P6M</prlb:EmployeeStockPurchasePlanOfferingPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002904"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      id="c56002919">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      id="c56002920">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember"
      id="c56002949">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember"
      id="c56002950">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c56002958"
      unitRef="Pure">0</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c56002960">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"
      decimals="-5"
      id="c56003298"
      unitRef="USD">13100000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember"
      id="c56003286">P1Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <prlb:OperatingLossCarryforwardsExpirationPeriod contextRef="d_2019-01-01_2019-12-31" id="c56003403">P10Y</prlb:OperatingLossCarryforwardsExpirationPeriod>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001824"
      unitRef="USD">952000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001825"
      unitRef="USD">919000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001873"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001874"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001875"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001876"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001877"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001878"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001879"
      unitRef="Share">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001880"
      unitRef="Share">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001883"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001884"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001885"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001886"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001887"
      unitRef="Share">26786459</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001888"
      unitRef="Share">26984747</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56001889"
      unitRef="Share">26786459</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56001890"
      unitRef="Share">26984747</us-gaap:CommonStockSharesOutstanding>
    <dei:DocumentType contextRef="d_2019-01-01_2019-12-31">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport contextRef="d_2019-01-01_2019-12-31">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate contextRef="d_2019-01-01_2019-12-31">2019-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2019-01-01_2019-12-31">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2019-01-01_2019-12-31">001-35435</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2019-01-01_2019-12-31">MN</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2019-01-01_2019-12-31">41-1939628</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2019-01-01_2019-12-31">5540 Pioneer Creek Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2019-01-01_2019-12-31">Maple Plain</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2019-01-01_2019-12-31">MN</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2019-01-01_2019-12-31">55359</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2019-01-01_2019-12-31">763</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2019-01-01_2019-12-31">479-3680</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2019-01-01_2019-12-31">Common Stock, Par Value $0.001 Per Share</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2019-01-01_2019-12-31">PRLB</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2019-01-01_2019-12-31">NYSE</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer contextRef="d_2019-01-01_2019-12-31">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers contextRef="d_2019-01-01_2019-12-31">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus contextRef="d_2019-01-01_2019-12-31">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2019-01-01_2019-12-31">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2019-01-01_2019-12-31">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness contextRef="d_2019-01-01_2019-12-31">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany contextRef="d_2019-01-01_2019-12-31">false</dei:EntityEmergingGrowthCompany>
    <dei:EntityShellCompany contextRef="d_2019-01-01_2019-12-31">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat contextRef="i_2019-06-30" decimals="1" unitRef="USD">3100000000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding contextRef="i_2020-02-14" decimals="INF" unitRef="Share">26787910</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001818"
      unitRef="USD">125225000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001819"
      unitRef="USD">85046000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001820"
      unitRef="USD">35437000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56001821"
      unitRef="USD">46750000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56001822"
      unitRef="USD">57450000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001823"
      unitRef="USD">59155000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001826"
      unitRef="USD">10075000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001827"
      unitRef="USD">10087000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001828"
      unitRef="USD">8232000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001829"
      unitRef="USD">8567000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001830"
      unitRef="USD">0</us-gaap:IncomeTaxesReceivable>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001831"
      unitRef="USD">5757000</us-gaap:IncomeTaxesReceivable>
    <us-gaap:AssetsCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001832"
      unitRef="USD">236419000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001833"
      unitRef="USD">215362000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001834"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001835"
      unitRef="USD">228001000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001836"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001837"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001838"
      unitRef="USD">17369000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56001839"
      unitRef="USD">19850000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56001840"
      unitRef="USD">12960000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001841"
      unitRef="USD">23579000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001842"
      unitRef="USD">11425000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001843"
      unitRef="USD">0</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56001844"
      unitRef="USD">3030000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001845"
      unitRef="USD">3441000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001846"
      unitRef="USD">673667000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001847"
      unitRef="USD">618985000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001850"
      unitRef="USD">16804000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001851"
      unitRef="USD">17411000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001852"
      unitRef="USD">15058000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56001853"
      unitRef="USD">18130000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001854"
      unitRef="USD">11057000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001855"
      unitRef="USD">16702000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56001856"
      unitRef="USD">3340000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001857"
      unitRef="USD">0</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001858"
      unitRef="USD">1322000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001859"
      unitRef="USD">491000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001860"
      unitRef="USD">47581000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001861"
      unitRef="USD">52734000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001862"
      unitRef="USD">8565000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001863"
      unitRef="USD">0</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001864"
      unitRef="USD">26283000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001865"
      unitRef="USD">20162000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001866"
      unitRef="USD">5448000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001867"
      unitRef="USD">4592000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001868"
      unitRef="USD">87877000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001869"
      unitRef="USD">77488000</us-gaap:Liabilities>
    <us-gaap:PreferredStockValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001871"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001872"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001881"
      unitRef="USD">27000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001882"
      unitRef="USD">27000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001891"
      unitRef="USD">268059000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001892"
      unitRef="USD">258502000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001893"
      unitRef="USD">324722000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56001894"
      unitRef="USD">291460000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001895"
      unitRef="USD">-7018000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001896"
      unitRef="USD">-8492000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56001897"
      unitRef="USD">585790000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001898"
      unitRef="USD">541497000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56001899"
      unitRef="USD">673667000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56001900"
      unitRef="USD">618985000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001908"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001909"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-4"
      id="c56001910"
      unitRef="USD">344490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001911"
      unitRef="USD">223438000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001912"
      unitRef="USD">206917000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001913"
      unitRef="USD">150648000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56001914"
      unitRef="USD">235290000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001915"
      unitRef="USD">238679000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001916"
      unitRef="USD">193842000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001918"
      unitRef="USD">72976000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001919"
      unitRef="USD">68533000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001920"
      unitRef="USD">56856000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001921"
      unitRef="USD">32692000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001922"
      unitRef="USD">28735000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-4"
      id="c56001923"
      unitRef="USD">23560000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001924"
      unitRef="USD">49766000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001925"
      unitRef="USD">52513000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56001926"
      unitRef="USD">41200000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:OperatingExpenses
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001927"
      unitRef="USD">155434000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001928"
      unitRef="USD">149781000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001929"
      unitRef="USD">121616000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001930"
      unitRef="USD">79856000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001931"
      unitRef="USD">88898000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001932"
      unitRef="USD">72226000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001933"
      unitRef="USD">1337000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001934"
      unitRef="USD">2757000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001935"
      unitRef="USD">2209000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001936"
      unitRef="USD">81193000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001937"
      unitRef="USD">91655000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001938"
      unitRef="USD">74435000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001939"
      unitRef="USD">17538000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001940"
      unitRef="USD">15067000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001941"
      unitRef="USD">22657000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001942"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001943"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001944"
      unitRef="USD">51778000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56001946"
      unitRef="USDPerShare">2.37</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56001947"
      unitRef="USDPerShare">2.84</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56001948"
      unitRef="USDPerShare">1.94</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56001949"
      unitRef="USDPerShare">2.35</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56001950"
      unitRef="USDPerShare">2.81</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56001951"
      unitRef="USDPerShare">1.93</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56001953"
      unitRef="Share">26866985</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56001954"
      unitRef="Share">26982614</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56001955"
      unitRef="Share">26647610</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56001956"
      unitRef="Share">27049423</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56001957"
      unitRef="Share">27278816</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56001958"
      unitRef="Share">26845071</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001960"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56001961"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001962"
      unitRef="USD">5519000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56001963"
      unitRef="USD">65129000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c56001964"
      unitRef="USD">73330000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001965"
      unitRef="USD">57297000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56001984"
      unitRef="Share">26504868</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56001985"
      unitRef="USD">26000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56001986"
      unitRef="USD">213857000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56001987"
      unitRef="USD">176703000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56001988"
      unitRef="USD">-10753000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31"
      decimals="-3"
      id="c56001989"
      unitRef="USD">379833000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56001990"
      unitRef="Share">283449</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56001991"
      unitRef="USD">1000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56001992"
      unitRef="USD">8603000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56001993"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56001994"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56001995"
      unitRef="USD">8604000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesAcquisitions
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56001996"
      unitRef="Share">118140</us-gaap:StockIssuedDuringPeriodSharesAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56001997"
      unitRef="USD">1000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56001998"
      unitRef="USD">11335000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56001999"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002000"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002001"
      unitRef="USD">11336000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002003"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002004"
      unitRef="USD">8558000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002005"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002006"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002007"
      unitRef="USD">8558000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002008"
      unitRef="Share">77806</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002009"
      unitRef="USD">1000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002010"
      unitRef="USD">628000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002011"
      unitRef="USD">3784000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002012"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002013"
      unitRef="USD">4413000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002015"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002016"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002017"
      unitRef="USD">51778000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002018"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002019"
      unitRef="USD">51778000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002022"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002023"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002024"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002025"
      unitRef="USD">5519000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002026"
      unitRef="USD">5519000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002032"
      unitRef="USD">57297000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002033"
      unitRef="Share">26828651</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002034"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002035"
      unitRef="USD">241725000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002036"
      unitRef="USD">224697000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002037"
      unitRef="USD">-5234000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c56002038"
      unitRef="USD">461215000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002039"
      unitRef="Share">260694</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002040"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002041"
      unitRef="USD">6791000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002042"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002043"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002044"
      unitRef="USD">6791000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002046"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002047"
      unitRef="USD">10928000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002048"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002049"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002050"
      unitRef="USD">10928000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002051"
      unitRef="Share">104598</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002052"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002053"
      unitRef="USD">942000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002054"
      unitRef="USD">11287000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002055"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002056"
      unitRef="USD">12229000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002058"
      unitRef="USD">0</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002059"
      unitRef="USD">0</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002060"
      unitRef="USD">1462000</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002061"
      unitRef="USD">0</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002062"
      unitRef="USD">1462000</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002064"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002065"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002066"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002067"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002068"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002071"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002072"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002073"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002074"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002075"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c56002081"
      unitRef="USD">73330000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002082"
      unitRef="Share">26984747</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002083"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002084"
      unitRef="USD">258502000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-4"
      id="c56002085"
      unitRef="USD">291460000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002086"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002087"
      unitRef="USD">541497000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002088"
      unitRef="Share">128174</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002089"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002090"
      unitRef="USD">1904000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002091"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002092"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002093"
      unitRef="USD">1904000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002095"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002096"
      unitRef="USD">10781000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002097"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002098"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002099"
      unitRef="USD">10781000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002100"
      unitRef="Share">326462</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002101"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002102"
      unitRef="USD">3128000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002103"
      unitRef="USD">30393000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002104"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002105"
      unitRef="USD">33521000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002107"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002108"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002109"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002110"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002111"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002114"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002115"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002116"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002117"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002118"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002124"
      unitRef="USD">65129000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c56002125"
      unitRef="Share">26786459</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c56002126"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c56002127"
      unitRef="USD">268059000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c56002128"
      unitRef="USD">324722000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c56002129"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56002130"
      unitRef="USD">585790000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002138"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002139"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002140"
      unitRef="USD">51778000</us-gaap:NetIncomeLoss>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002142"
      unitRef="USD">30864000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002143"
      unitRef="USD">26754000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002144"
      unitRef="USD">18474000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002145"
      unitRef="USD">10781000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002146"
      unitRef="USD">10928000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002147"
      unitRef="USD">8558000</us-gaap:ShareBasedCompensation>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002148"
      unitRef="USD">6106000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002149"
      unitRef="USD">11936000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002150"
      unitRef="USD">1174000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:AssetImpairmentCharges
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002151"
      unitRef="USD">0</us-gaap:AssetImpairmentCharges>
    <us-gaap:AssetImpairmentCharges
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002152"
      unitRef="USD">0</us-gaap:AssetImpairmentCharges>
    <us-gaap:AssetImpairmentCharges
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002153"
      unitRef="USD">513000</us-gaap:AssetImpairmentCharges>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002154"
      unitRef="USD">-0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002155"
      unitRef="USD">671000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002156"
      unitRef="USD">-0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002157"
      unitRef="USD">-5000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002158"
      unitRef="USD">-374000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002159"
      unitRef="USD">-1063000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002160"
      unitRef="USD">-391000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002161"
      unitRef="USD">619000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002162"
      unitRef="USD">153000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002164"
      unitRef="USD">-1848000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002165"
      unitRef="USD">6098000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002166"
      unitRef="USD">9933000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56002167"
      unitRef="USD">-60000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002168"
      unitRef="USD">189000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002169"
      unitRef="USD">985000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002170"
      unitRef="USD">-545000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002171"
      unitRef="USD">2098000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002172"
      unitRef="USD">691000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002173"
      unitRef="USD">6555000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002174"
      unitRef="USD">-6652000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002175"
      unitRef="USD">1646000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002176"
      unitRef="USD">-719000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002177"
      unitRef="USD">1942000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002178"
      unitRef="USD">3176000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002179"
      unitRef="USD">-4039000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002180"
      unitRef="USD">10734000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002181"
      unitRef="USD">7128000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002182"
      unitRef="USD">116052000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002183"
      unitRef="USD">122929000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002184"
      unitRef="USD">81748000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56002186"
      unitRef="USD">62230000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002187"
      unitRef="USD">87104000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002188"
      unitRef="USD">32635000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002189"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c56002190"
      unitRef="USD">90000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002191"
      unitRef="USD">110533000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002192"
      unitRef="USD">0</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002193"
      unitRef="USD">284000</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002194"
      unitRef="USD">0</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-6"
      id="c56002195"
      unitRef="USD">4000000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002196"
      unitRef="USD">126000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002197"
      unitRef="USD">8742000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002198"
      unitRef="USD">46403000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002199"
      unitRef="USD">41384000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002200"
      unitRef="USD">20037000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56002201"
      unitRef="USD">68330000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002202"
      unitRef="USD">65139000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002203"
      unitRef="USD">47972000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002204"
      unitRef="USD">-44303000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002205"
      unitRef="USD">-63281000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002206"
      unitRef="USD">-123975000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002208"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-6"
      id="c56002209"
      unitRef="USD">5000000</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002210"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:ProceedsFromIssuanceOfDebt
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002211"
      unitRef="USD">0</us-gaap:ProceedsFromIssuanceOfDebt>
    <us-gaap:ProceedsFromIssuanceOfDebt
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002212"
      unitRef="USD">0</us-gaap:ProceedsFromIssuanceOfDebt>
    <us-gaap:ProceedsFromIssuanceOfDebt
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-6"
      id="c56002213"
      unitRef="USD">5000000</us-gaap:ProceedsFromIssuanceOfDebt>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002214"
      unitRef="USD">4391000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002215"
      unitRef="USD">8935000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002216"
      unitRef="USD">8602000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002217"
      unitRef="USD">2487000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002218"
      unitRef="USD">2144000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002219"
      unitRef="USD">-0</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002220"
      unitRef="USD">33521000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002221"
      unitRef="USD">12229000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-4"
      id="c56002222"
      unitRef="USD">4410000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002223"
      unitRef="USD">-31617000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002224"
      unitRef="USD">-10438000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002225"
      unitRef="USD">9192000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002226"
      unitRef="USD">47000</us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002227"
      unitRef="USD">-871000</us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002228"
      unitRef="USD">947000</us-gaap:EffectOfExchangeRateOnCashAndCashEquivalents>
    <us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002229"
      unitRef="USD">40179000</us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease>
    <us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002230"
      unitRef="USD">48339000</us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease>
    <us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002231"
      unitRef="USD">-32088000</us-gaap:CashAndCashEquivalentsPeriodIncreaseDecrease>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002232"
      unitRef="USD">85046000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c56002233"
      unitRef="USD">36707000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2016-12-31"
      decimals="-3"
      id="c56002234"
      unitRef="USD">68795000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002235"
      unitRef="USD">125225000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002236"
      unitRef="USD">85046000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c56002237"
      unitRef="USD">36707000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:InterestPaidNet
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002239"
      unitRef="USD">14000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002240"
      unitRef="USD">39000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002241"
      unitRef="USD">19000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002242"
      unitRef="USD">4002000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002243"
      unitRef="USD">9966000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002244"
      unitRef="USD">19113000</us-gaap:IncomeTaxesPaid>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434366">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"&gt;&lt;b&gt;&lt;a href="#" id="notes" title="notes"/&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;1&lt;/em&gt; &#x2014; Nature of Business&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Organization and business&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#160;injection-molded, computer numerical control (CNC) machined, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt;-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#x2019;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#x2019;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt;-dimensional (&lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt;)&#160;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#x2019;s primary manufacturing product lines currently include Injection Molding, CNC Machining, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#x2019;s subsidiaries are:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
    &lt;tbody&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Location&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="width: 58%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="width: 36%; text-align: right;"&gt;&#160;&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;PL-US International LLC&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United States&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Rapid Management Group LLC&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United States&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Rapid Sheet Metal LLC (RSM)&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United States&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Rapid Manufacturing LLC (RM)&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United States&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Proto Labs Ltd.&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;PL International Holdings, UK, Ltd.&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;PL Euro Services Limited&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Proto Labs GmbH&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Germany&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Proto Labs Tooling GmbH&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Germany&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Proto Labs, G.K.&lt;/p&gt; &lt;/td&gt;
      &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
     &lt;/tr&gt;
    &lt;/tbody&gt;
   &lt;/table&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <us-gaap:SignificantAccountingPoliciesTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434367">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;2&lt;/em&gt; &#x2014; Summary of Significant Accounting Policies&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Principles of consolidation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Comprehensive income&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting estimates&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Cash and cash equivalents&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt; months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;exceed federally insured limits. The Company has &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; experienced any losses on such accounts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Marketable securities&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt; months or less at the time of purchase are categorized as cash equivalents as described above. The Company reviews impairments associated with its marketable securities in accordance with the measurement guidance provided by ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;320,&lt;/em&gt; &lt;i&gt;Investments &#x2013; Debt and Equity Securities,&lt;/i&gt; when determining the classification of impairment as &#x201c;temporary&#x201d; or &#x201c;other-than-temporary.&#x201d; The factors used to differentiate between temporary and other-than-temporary include assessment of the quality of the security, credit ratings actions and management&#x2019;s intent to hold the security to maturity as well as other factors.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounts receivable and allowance for doubtful accounts&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Inventory&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average cost method, which approximates &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-in, &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Property, equipment and leasehold improvements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; in service are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; depreciated until the asset is put into use.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company follows ASC&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt;350&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;40,&lt;/em&gt;&lt;i&gt; Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively, $32.7 million and $16.6 million of software development costs were capitalized. Capitalized software development costs for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;were &lt;em style="font-weight: inherit; font-style: normal;"&gt;$16.1&lt;/em&gt; million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes goodwill in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;350,&lt;/em&gt; &lt;i&gt;Intangibles&#x2014;Goodwill and Other&lt;/i&gt;. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; amortized. Goodwill is tested for impairment annually in the &lt;em style="font-weight: inherit; font-style: normal;"&gt;fourth&lt;/em&gt; quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Other Intangible Assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from &lt;span style="-sec-ix-hidden:c56002302"&gt;two&lt;/span&gt; to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting for long-lived assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Revenue recognition&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;On &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018, &lt;/em&gt;the Company adopted&#160;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers,&lt;/i&gt;&#160;using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Prior to &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company recognized revenue when it was realized or realizable and earned when all of the following criteria were met: persuasive evidence of an arrangement existed, delivery had occurred or services had been rendered, the price to the buyer was fixed or determinable and collectability was reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in the Company&#x2019;s Injection Molding, CNC Machining, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing and Sheet Metal product lines.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&gt;
   &lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;On &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019, &lt;/em&gt;the Company adopted ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;, which introduced the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"&gt;
    &lt;div class="PGNUM" style="text-align: center; width: 100%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &lt;em style="font-weight: inherit; font-style: normal;"/&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Income taxes&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for income taxes in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740,&lt;/em&gt;&lt;i&gt; Income Taxes&lt;/i&gt; (ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt;). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be recognized.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt; also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; criterion. Additionally, ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt; provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Stock-based compensation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for stock-based compensation in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718,&lt;/em&gt;&lt;i&gt; Compensation&#x2014;Stock Compensation&lt;/i&gt; (ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718&lt;/em&gt;). Under the fair value recognition provisions of ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718,&lt;/em&gt; the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Advertising costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Advertising is expensed as incurred and was approximately $13.0&#160;million, $11.8 million and $10.7 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&#160;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Research and development&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;350&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles - Goodwill and Other, Internal-Use Software&lt;/i&gt;. Research and development costs were approximately $32.7&#160;million, $28.7 million and $23.6 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Foreign currency translation/transactions&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Business combinations&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for business combinations in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805,&lt;/em&gt; &lt;i&gt;Business Combinations &lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805&lt;/em&gt;). On &lt;em style="font-weight: inherit; font-style: normal;"&gt; November 30, 2017, &lt;/em&gt;the Company acquired&#160;RAPID Manufacturing Group, LLC (RAPID) for $122.0 million, consisting of $110.6 million in cash and $11.3 million in the Company&#x2019;s common stock.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"&gt;&#160;&lt;/p&gt;
   &lt;div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"&gt;
    &lt;div class="PGNUM" style="text-align: center; width: 100%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &lt;em style="font-weight: inherit; font-style: normal;"/&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Recently adopted accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;fourth&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; the Company early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;04,&lt;/em&gt; &lt;i&gt;Intangibles &#x2013; Goodwill and Other, &lt;/i&gt;which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; material impact on the Company's consolidated financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; the Company adopted the FASB ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;02,&lt;/em&gt;&#160;&lt;i&gt;Leases&#160;&lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842&lt;/em&gt;), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;11,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) &lt;em style="font-weight: inherit; font-style: normal;"&gt;840,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of &lt;em style="font-weight: inherit; font-style: normal;"&gt;12&lt;/em&gt; months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019 &lt;/em&gt;of $13.1 million.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company adopted the FASB ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2014&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;09,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers &lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606&lt;/em&gt;). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. The Company adopted the new revenue standard using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#160;manufactured parts that meet these &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. The transition adjustment recorded was an increase of $1.5 million&#160;to the Company's retained earnings balance&#160;as of&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company adopted ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;09,&lt;/em&gt; &lt;i&gt;Compensation &#x2013; Stock Compensation&lt;/i&gt;, which is intended to provide clarity and reduce diversity in practice&#160;as well as&#160;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; have a material impact on the Company's consolidated financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Recently issued accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;In &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 2019, &lt;/em&gt;the FASB issued ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;12,&lt;/em&gt; &lt;i&gt;Income Taxes&lt;/i&gt;, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 15, 2020 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; expect the impact to be material.&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;In &lt;em style="font-weight: inherit; font-style: normal;"&gt; June 2016, &lt;/em&gt;the FASB issued ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;13,&lt;/em&gt; &lt;i&gt;Financial Instruments &#x2013; Credit Losses, &lt;/i&gt;which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 15, 2019 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; have a material impact on the Company's consolidated financial statements.&lt;/p&gt;&lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:SignificantAccountingPoliciesTextBlock>
    <us-gaap:ConsolidationPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025627">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Principles of consolidation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025628">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Comprehensive income&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates contextRef="d_2019-01-01_2019-12-31" id="c56025629">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting estimates&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:UseOfEstimates>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025630">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Cash and cash equivalents&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt; months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;exceed federally insured limits. The Company has &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; experienced any losses on such accounts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/&gt;</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <us-gaap:MarketableSecuritiesPolicy contextRef="d_2019-01-01_2019-12-31" id="c56025631">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Marketable securities&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt; months or less at the time of purchase are categorized as cash equivalents as described above. The Company reviews impairments associated with its marketable securities in accordance with the measurement guidance provided by ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;320,&lt;/em&gt; &lt;i&gt;Investments &#x2013; Debt and Equity Securities,&lt;/i&gt; when determining the classification of impairment as &#x201c;temporary&#x201d; or &#x201c;other-than-temporary.&#x201d; The factors used to differentiate between temporary and other-than-temporary include assessment of the quality of the security, credit ratings actions and management&#x2019;s intent to hold the security to maturity as well as other factors.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:MarketableSecuritiesPolicy>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy contextRef="d_2019-01-01_2019-12-31" id="c56025632">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounts receivable and allowance for doubtful accounts&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:InventoryPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025633">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Inventory&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average cost method, which approximates &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-in, &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025634">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Property, equipment and leasehold improvements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; in service are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; depreciated until the asset is put into use.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company follows ASC&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt;350&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;40,&lt;/em&gt;&lt;i&gt; Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively, $32.7 million and $16.6 million of software development costs were capitalized. Capitalized software development costs for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;were &lt;em style="font-weight: inherit; font-style: normal;"&gt;$16.1&lt;/em&gt; million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember"
      id="c56002268">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember"
      id="c56002270">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember"
      id="c56002272">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember"
      id="c56002274">P15Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember"
      id="c56002276">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember"
      id="c56002278">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember"
      id="c56002280">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember"
      id="c56002282">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"
      id="c56002284">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember"
      id="c56002286">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2019-01-01_2019-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember"
      id="c56002288">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56002295"
      unitRef="USD">32700000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2018-12-31"
      decimals="-5"
      id="c56002296"
      unitRef="USD">16600000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy contextRef="d_2019-01-01_2019-12-31" id="c56025635">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes goodwill in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;350,&lt;/em&gt; &lt;i&gt;Intangibles&#x2014;Goodwill and Other&lt;/i&gt;. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; amortized. Goodwill is tested for impairment annually in the &lt;em style="font-weight: inherit; font-style: normal;"&gt;fourth&lt;/em&gt; quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy contextRef="d_2019-01-01_2019-12-31" id="c56025636">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Other Intangible Assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from &lt;span style="-sec-ix-hidden:c56002302"&gt;two&lt;/span&gt; to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember"
      id="c56002303">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025637">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting for long-lived assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
    <us-gaap:RevenueRecognitionPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025638">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Revenue recognition&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;On &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018, &lt;/em&gt;the Company adopted&#160;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers,&lt;/i&gt;&#160;using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Prior to &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company recognized revenue when it was realized or realizable and earned when all of the following criteria were met: persuasive evidence of an arrangement existed, delivery had occurred or services had been rendered, the price to the buyer was fixed or determinable and collectability was reasonably assured. Revenue was recognized upon transfer of title and risk of loss, which was generally upon the shipment of parts in the Company&#x2019;s Injection Molding, CNC Machining, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing and Sheet Metal product lines.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;</us-gaap:RevenueRecognitionPolicyTextBlock>
    <us-gaap:LesseeLeasesPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025639">&lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;On &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019, &lt;/em&gt;the Company adopted ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;, which introduced the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"&gt;
    &lt;div class="PGNUM" style="text-align: center; width: 100%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &lt;em style="font-weight: inherit; font-style: normal;"/&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:IncomeTaxPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025640">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Income taxes&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for income taxes in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740,&lt;/em&gt;&lt;i&gt; Income Taxes&lt;/i&gt; (ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt;). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be recognized.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt; also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; criterion. Additionally, ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;740&lt;/em&gt; provides guidance on measurement, de-recognition, classification, interest and penalties, accounting in interim periods, disclosure and transition.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:CompensationRelatedCostsPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025641">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Stock-based compensation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for stock-based compensation in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718,&lt;/em&gt;&lt;i&gt; Compensation&#x2014;Stock Compensation&lt;/i&gt; (ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718&lt;/em&gt;). Under the fair value recognition provisions of ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718,&lt;/em&gt; the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:CompensationRelatedCostsPolicyTextBlock>
    <us-gaap:AdvertisingCostsPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025642">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Advertising costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Advertising is expensed as incurred and was approximately $13.0&#160;million, $11.8 million and $10.7 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&#160;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-6"
      id="c56002322"
      unitRef="USD">13000000.0</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56002323"
      unitRef="USD">11800000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56002324"
      unitRef="USD">10700000</us-gaap:AdvertisingExpense>
    <us-gaap:ResearchAndDevelopmentExpensePolicy contextRef="d_2019-01-01_2019-12-31" id="c56025643">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Research and development&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;350&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles - Goodwill and Other, Internal-Use Software&lt;/i&gt;. Research and development costs were approximately $32.7&#160;million, $28.7 million and $23.6 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ResearchAndDevelopmentExpensePolicy>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56002331"
      unitRef="USD">32700000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56002332"
      unitRef="USD">28700000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56002333"
      unitRef="USD">23600000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025644">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Foreign currency translation/transactions&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:BusinessCombinationsPolicy contextRef="d_2019-01-01_2019-12-31" id="c56025645">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Business combinations&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for business combinations in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805,&lt;/em&gt; &lt;i&gt;Business Combinations &lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805&lt;/em&gt;). On &lt;em style="font-weight: inherit; font-style: normal;"&gt; November 30, 2017, &lt;/em&gt;the Company acquired&#160;RAPID Manufacturing Group, LLC (RAPID) for $122.0 million, consisting of $110.6 million in cash and $11.3 million in the Company&#x2019;s common stock.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"&gt;&#160;&lt;/p&gt;
   &lt;div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"&gt;
    &lt;div class="PGNUM" style="text-align: center; width: 100%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &lt;em style="font-weight: inherit; font-style: normal;"/&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:BusinessCombinationsPolicy>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-6"
      id="c56002338"
      unitRef="USD">122000000.0</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002339"
      unitRef="USD">110600000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002340"
      unitRef="USD">11300000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock contextRef="d_2019-01-01_2019-12-31" id="c56025646">&lt;p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Recently adopted accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;fourth&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; the Company early adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;04,&lt;/em&gt; &lt;i&gt;Intangibles &#x2013; Goodwill and Other, &lt;/i&gt;which is intended to simplify the subsequent measurement of goodwill. The adoption of this guidance had &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; material impact on the Company's consolidated financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; the Company adopted the FASB ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;02,&lt;/em&gt;&#160;&lt;i&gt;Leases&#160;&lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842&lt;/em&gt;), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;11,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) &lt;em style="font-weight: inherit; font-style: normal;"&gt;840,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of &lt;em style="font-weight: inherit; font-style: normal;"&gt;12&lt;/em&gt; months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019 &lt;/em&gt;of $13.1 million.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company adopted the FASB ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2014&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;09,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers &lt;/i&gt;(ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606&lt;/em&gt;). This ASU is a comprehensive new revenue recognition model that requires a company to recognize revenue from the transfer of goods or services to customers in an amount that reflects the consideration that the entity expects to receive in exchange for those goods or services. The Company adopted the new revenue standard using the modified retrospective approach. The Company manufactures custom parts to specific customer orders that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For&#160;manufactured parts that meet these &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. The transition adjustment recorded was an increase of $1.5 million&#160;to the Company's retained earnings balance&#160;as of&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;During the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; quarter of &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; the Company adopted ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;09,&lt;/em&gt; &lt;i&gt;Compensation &#x2013; Stock Compensation&lt;/i&gt;, which is intended to provide clarity and reduce diversity in practice&#160;as well as&#160;cost and complexity when applying the guidance to a change to the terms or conditions of a share-based payment award. The adoption of this guidance did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; have a material impact on the Company's consolidated financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 9pt; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Recently issued accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt -3pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;In &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 2019, &lt;/em&gt;the FASB issued ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;12,&lt;/em&gt; &lt;i&gt;Income Taxes&lt;/i&gt;, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 15, 2020 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; expect the impact to be material.&lt;/p&gt;
   &lt;p style="margin: 0pt 29.7pt 0pt 14.7pt; text-align: left; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; text-indent: 27pt; font-size: 10pt;"&gt;In &lt;em style="font-weight: inherit; font-style: normal;"&gt; June 2016, &lt;/em&gt;the FASB issued ASU &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;-&lt;em style="font-weight: inherit; font-style: normal;"&gt;13,&lt;/em&gt; &lt;i&gt;Financial Instruments &#x2013; Credit Losses, &lt;/i&gt;which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. This guidance will be effective for fiscal years beginning after &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 15, 2019 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The impact of this guidance will &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; have a material impact on the Company's consolidated financial statements.&lt;/p&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"
      decimals="-5"
      id="c56002356"
      unitRef="USD">13100000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-5"
      id="c56002364"
      unitRef="USD">1500000</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:RevenueFromContractWithCustomerTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434368">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;3&lt;/em&gt; &#x2013; Revenue&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#160;The Company&#160;accounts for revenue in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606,&lt;/em&gt; which the Company&#160;adopted on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018, &lt;/em&gt;using the modified retrospective method. Results for reporting periods beginning after &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018 &lt;/em&gt;are presented under&#160;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606,&lt;/em&gt; while prior period amounts are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; adjusted and continue to be reported in accordance with the Company&#x2019;s historic accounting under ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;605.&lt;/em&gt; The Company recorded a net increase of $1.5 million&#160;to its retained earnings balance on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2018 &lt;/em&gt;due to the cumulative impact of adopting&#160;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606.&lt;/em&gt; The impact of adopting&#160;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606&lt;/em&gt; was to increase revenue by&#160;$0.3 million and increase cost of revenue&#160;by&#160;$0.2 million for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2018, &lt;/em&gt;and to&#160;increase accounts receivable by $2.9 million and decrease&#160;inventory by $1.3 million&#160;as of&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2018, &lt;/em&gt;which includes the transition adjustment of $1.5 million noted above.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;606.&lt;/em&gt; The majority of the Company&#x2019;s CNC machining, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including &lt;em style="font-weight: inherit; font-style: normal;"&gt;one&lt;/em&gt; obligation to produce the mold and a &lt;em style="font-weight: inherit; font-style: normal;"&gt;second&lt;/em&gt; obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company manufactures parts that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue by geographic region for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 46%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;263,086&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70,154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue by product line for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&#160;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; was as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 46%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Injection Molding&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,415&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,523&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;194,432&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;CNC Machining&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;155,473&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;153,521&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;103,739&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;3D Printing&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,342&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;43,329&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Sheet Metal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,000&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,998&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,767&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Other Revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,488&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,212&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,223&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#160;generally expenses sales commissions when incurred because the amortization period would have been &lt;em style="font-weight: inherit; font-style: normal;"&gt;one&lt;/em&gt; year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of &lt;em style="font-weight: inherit; font-style: normal;"&gt;one&lt;/em&gt; year or less is &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; material.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-5"
      id="c56002383"
      unitRef="USD">1500000</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member"
      decimals="-5"
      id="c56002386"
      unitRef="USD">300000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member"
      decimals="-5"
      id="c56002387"
      unitRef="USD">200000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member"
      decimals="-5"
      id="c56002388"
      unitRef="USD">2900000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2018-01-01_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member"
      decimals="-5"
      id="c56002389"
      unitRef="USD">-1300000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
      contextRef="i_2018-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-5"
      id="c56002390"
      unitRef="USD">1500000</us-gaap:CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption>
    <us-gaap:DisaggregationOfRevenueTableTextBlock
      contextRef="d_2019-01-01_2019-12-31"
      id="c61258AF4-9D7A-40F9-98FB-7A3C0301BCB4">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 46%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;263,086&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70,154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 46%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Injection Molding&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,415&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,523&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;194,432&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;CNC Machining&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;155,473&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;153,521&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;103,739&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;3D Printing&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,342&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;43,329&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Sheet Metal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,000&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,998&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,767&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Other Revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,488&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,212&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,223&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002412"
      unitRef="USD">360205000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002413"
      unitRef="USD">350535000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002414"
      unitRef="USD">263086000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002415"
      unitRef="USD">82805000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002416"
      unitRef="USD">80889000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002417"
      unitRef="USD">70154000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56002418"
      unitRef="USD">15718000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56002419"
      unitRef="USD">14172000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c56002420"
      unitRef="USD">11250000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002421"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002422"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-4"
      id="c56002423"
      unitRef="USD">344490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c56002431"
      unitRef="USD">217415000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c56002432"
      unitRef="USD">210523000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c56002433"
      unitRef="USD">194432000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c56002434"
      unitRef="USD">155473000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c56002435"
      unitRef="USD">153521000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c56002436"
      unitRef="USD">103739000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c56002437"
      unitRef="USD">61352000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c56002438"
      unitRef="USD">53342000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c56002439"
      unitRef="USD">43329000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-6"
      id="c56002440"
      unitRef="USD">21000000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c56002441"
      unitRef="USD">24998000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c56002442"
      unitRef="USD">1767000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c56002443"
      unitRef="USD">3488000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c56002444"
      unitRef="USD">3212000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c56002445"
      unitRef="USD">1223000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002446"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002447"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-4"
      id="c56002448"
      unitRef="USD">344490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:EarningsPerShareTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434371">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;4&lt;/em&gt; &#x2013; Net Income Per Common Share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Basic net income per share is computed based on the weighted average number of common shares outstanding. Diluted net income per share is computed based on the weighted average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had the potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands, except share and per share amounts)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net Income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63,655&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;76,588&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;51,778&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Basic - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,866,985&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,982,614&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,647,610&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Effect of dilutive securities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Employee stock options and other&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;182,438&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296,202&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;197,461&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Diluted - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,049,423&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,278,816&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,845,071&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income per share attributable to common shareholders:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.37&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.84&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1.94&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.93&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&gt;
  </us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434372">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands, except share and per share amounts)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net Income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63,655&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;76,588&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;51,778&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Basic - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,866,985&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,982,614&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,647,610&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Effect of dilutive securities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Employee stock options and other&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;182,438&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296,202&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;197,461&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Diluted - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,049,423&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,278,816&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,845,071&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income per share attributable to common shareholders:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.37&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.84&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1.94&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.93&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002456"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002457"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002458"
      unitRef="USD">51778000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56002459"
      unitRef="Share">26866985</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56002460"
      unitRef="Share">26982614</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56002461"
      unitRef="Share">26647610</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56002463"
      unitRef="Share">182438</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56002464"
      unitRef="Share">296202</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56002465"
      unitRef="Share">197461</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56002466"
      unitRef="Share">27049423</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56002467"
      unitRef="Share">27278816</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56002468"
      unitRef="Share">26845071</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56002470"
      unitRef="USDPerShare">2.37</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56002471"
      unitRef="USDPerShare">2.84</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56002472"
      unitRef="USDPerShare">1.94</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56002473"
      unitRef="USDPerShare">2.35</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56002474"
      unitRef="USDPerShare">2.81</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56002475"
      unitRef="USDPerShare">1.93</us-gaap:EarningsPerShareDiluted>
    <us-gaap:BusinessCombinationDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434373">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;5&lt;/em&gt; &#x2013; Business Combinations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;On &lt;em style="font-weight: inherit; font-style: normal;"&gt; November 30, 2017, &lt;/em&gt;the Company acquired RAPID for $122.0 million, consisting of $110.6 million in cash (net of cash acquired)&#160;and $11.3 million in the Company&#x2019;s common stock. The operations of RAPID are integrated into the operations of the Company.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;RAPID is a New Hampshire-based custom parts supplier specializing in quick-turn sheet metal fabrication and CNC machining. With the acquisition, the Company offers its customers another quick-turn manufacturing service while expanding its CNC machining capabilities.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805.&lt;/em&gt; The fair value of the consideration paid exceeded the fair value of the assets&#160;acquired and liabilities assumed, which resulted in goodwill of $99.8 million. The goodwill primarily&#160;relates to&#160;synergies resulting from the acquisition&#160;and&#160;is deductible for tax purposes over a 15-year period.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The RAPID&#160;amortizable intangible assets&#160;were valued as of the acquisition date and were deemed to have&#160;a weighted-average useful life of&#160;5.5 years. The customer relationships were valued at $7.5 million based on the Multi-Period Excess Earnings Method and are amortized over 6.0 years. The trade names were valued at $1.1 million based on the Relief-from-Royalty Method and are amortized over 2.0 years. The non-competition agreement was valued at $0.1 million based on the Discounted Cash Flow method and will be amortized over 5 years. The allocation of the purchase price to assets acquired and liabilities assumed is as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 82%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Assets acquired:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,720&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99,836&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,700&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,855&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;124,111&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Liabilities assumed:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,067&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;85&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,152&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net assets acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,959&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,378&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,755&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net cash consideration&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110,623&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Equity portion of purchase price&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,336&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total purchase consideration&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,959&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following unaudited pro forma information represents the Company&#x2019;s results of operations as if the fiscal &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; acquisition of RAPID had occurred at the beginning of fiscal &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016.&lt;/em&gt; These performance results &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be indicative of the actual results that would have occurred under the ownership and management of the Company.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 62%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;(unaudited)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;386,677&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;336,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;55,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The unaudited pro forma net income for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2017 &lt;/em&gt;excludes&#160;transaction costs of approximately $1.9 million and includes the increase in estimated depreciation expense of approximately $0.9 million and the increase in estimated amortization expense of approximately&#160;$3.0 million. The unaudited pro forma net income for the year ended&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;&#160;includes the impact of new stock options and restricted stock units granted to employees of approximately $0.2 million in connection with the acquisition, an increase in estimated depreciation expense of approximately $0.6 million and the increase in estimated amortization expense of approximately $3.1 million. The pro forma net income for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2017 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt; include the related tax effects of the adjustments. The pro forma information has been prepared for comparative purposes only and includes certain adjustments, as noted above. The adjustments are estimates and actual amounts &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;differ materially from these estimates. They do &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; reflect the effect of costs or synergies that would have been expected to result from the integration of the RAPID acquisition. The pro forma information does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; purport to be indicative of the results of operations that actually would have resulted had the RAPID acquisition occurred on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2016. &lt;/em&gt;The Company&#x2019;s &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; Consolidated Statements of Comprehensive Income include $3.6 million of revenue and $0.7 million of net loss related to RAPID. The net loss was primarily driven by $1.1 million of bonus payments to RAPID employees as a result of the acquisition.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-6"
      id="c56002477"
      unitRef="USD">122000000.0</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002478"
      unitRef="USD">110600000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002479"
      unitRef="USD">11300000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:Goodwill
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002481"
      unitRef="USD">99800000</us-gaap:Goodwill>
    <prlb:BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      id="c56002482">P15Y</prlb:BusinessAcquisitionGoodwillExpectedTaxDeductiblePeriod>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      id="c56002484">P5Y6M</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-5"
      id="c56002485"
      unitRef="USD">7500000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      id="c56002486">P6Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-5"
      id="c56002487"
      unitRef="USD">1100000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      id="c56002488">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-5"
      id="c56002489"
      unitRef="USD">100000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      id="c56002490">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock
      contextRef="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember"
      id="c1434374">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 82%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Assets acquired:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,720&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99,836&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,700&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,855&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;124,111&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Liabilities assumed:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,067&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;85&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,152&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net assets acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,959&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,378&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash acquired&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,755&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net cash consideration&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110,623&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Equity portion of purchase price&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,336&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total purchase consideration&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,959&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-4"
      id="c56002511"
      unitRef="USD">6720000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets>
    <us-gaap:Goodwill
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002512"
      unitRef="USD">99836000</us-gaap:Goodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002513"
      unitRef="USD">8700000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002514"
      unitRef="USD">8855000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002515"
      unitRef="USD">124111000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002517"
      unitRef="USD">2067000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002518"
      unitRef="USD">85000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002519"
      unitRef="USD">2152000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet
      contextRef="i_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002520"
      unitRef="USD">121959000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002521"
      unitRef="USD">115378000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:CashAcquiredFromAcquisition
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002522"
      unitRef="USD">4755000</us-gaap:CashAcquiredFromAcquisition>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002523"
      unitRef="USD">110623000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002524"
      unitRef="USD">11336000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002525"
      unitRef="USD">121959000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:BusinessAcquisitionProFormaInformationTextBlock
      contextRef="d_2019-01-01_2019-12-31_BusinessAcquisitionAxis-RapidMember"
      id="c1434375">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 62%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2016&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;(unaudited)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;386,677&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;336,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;55,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:BusinessAcquisitionProFormaInformationTextBlock>
    <us-gaap:BusinessAcquisitionsProFormaRevenue
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002530"
      unitRef="USD">386677000</us-gaap:BusinessAcquisitionsProFormaRevenue>
    <us-gaap:BusinessAcquisitionsProFormaRevenue
      contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002531"
      unitRef="USD">336634000</us-gaap:BusinessAcquisitionsProFormaRevenue>
    <us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-4"
      id="c56002532"
      unitRef="USD">55070000</us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss>
    <us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss
      contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-3"
      id="c56002533"
      unitRef="USD">41805000</us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss>
    <us-gaap:BusinessCombinationAcquisitionRelatedCosts
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002494"
      unitRef="USD">1900000</us-gaap:BusinessCombinationAcquisitionRelatedCosts>
    <prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002495"
      unitRef="USD">-900000</prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense>
    <us-gaap:AdjustmentForAmortization
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-6"
      id="c56002496"
      unitRef="USD">3000000.0</us-gaap:AdjustmentForAmortization>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002499"
      unitRef="USD">200000</us-gaap:ShareBasedCompensation>
    <prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense
      contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002500"
      unitRef="USD">-600000</prlb:BusinessAcquisitionIncreaseDecreaseInDepreciationExpense>
    <us-gaap:AdjustmentForAmortization
      contextRef="d_2016-01-01_2016-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002501"
      unitRef="USD">3100000</us-gaap:AdjustmentForAmortization>
    <us-gaap:BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual
      contextRef="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002506"
      unitRef="USD">3600000</us-gaap:BusinessCombinationProFormaInformationRevenueOfAcquireeSinceAcquisitionDateActual>
    <us-gaap:BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual
      contextRef="d_2017-11-30_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002507"
      unitRef="USD">-700000</us-gaap:BusinessCombinationProFormaInformationEarningsOrLossOfAcquireeSinceAcquisitionDateActual>
    <us-gaap:PaymentsToEmployees
      contextRef="d_2017-11-30_2017-11-30_BusinessAcquisitionAxis-RapidMember_TitleOfIndividualAxis-EmployeesMember"
      decimals="-5"
      id="c56002508"
      unitRef="USD">1100000</us-gaap:PaymentsToEmployees>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434376">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;6&lt;/em&gt; &#x2013; Goodwill and Other Intangible Assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The changes in the carrying amount of goodwill for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; were as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Goodwill acquired during 2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Goodwill acquired during 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,635&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,504&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As described in Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;5&lt;/em&gt; &#x2013;&#160;Business Combinations, the Company acquired RAPID in &lt;em style="font-weight: inherit; font-style: normal;"&gt; November 2017. &lt;/em&gt;The fair value of the consideration paid exceeded the fair value of the assets acquired and liabilities assumed, which resulted in goodwill in the United States&#160;of $99.6 million for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2017 &lt;/em&gt;and a related working capital adjustment of $0.2 million for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2018.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Intangible assets other than goodwill for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; were as follows:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted Average Useful Life&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Useful Life (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Remaining (in years)&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td colspan="4" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Intangible Assets with finite lives:&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Marketing assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;930&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(527&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;403&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;930&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(434&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;496&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Non-compete agreement&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;270&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(222&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;270&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(206&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;64&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0 - 5.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Trade secrets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(233&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Trade names&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Software technology&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,229&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2,275&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;12,229&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(997&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,232&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,106&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,964&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,569&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,501&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.0 - 9.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;25,829&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,460&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24,829&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(4,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19,850&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Amortization expense for intangible assets for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; was $3.5&#160;million, $3.2 million and $0.5 million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company acquired a software company in &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 2017, &lt;/em&gt;which was accounted for as an asset acquisition and resulted in an $8.2 million software technology intangible asset for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2017. &lt;/em&gt;The acquisition did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; meet the definition of a business under ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;805.&lt;/em&gt; The asset acquisition included an additional $5.0 million in contingent consideration to be recognized and paid upon completion of certain milestones&#160;over a 24-month period. The completion of each milestone resulted in additional value to the software technology intangible asset. We recognized $1.0&#160;million of the contingent consideration&#160;for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019. &lt;/em&gt;We recognized $4.0 million of the contingent consideration&#160;for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2018.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 82%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2020&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2021&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2022&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2023&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,813&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,400&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,108&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total estimated amortization expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434377">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Goodwill acquired during 2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Goodwill acquired during 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Dec. 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,635&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;630&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,504&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="i_2017-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002559"
      unitRef="USD">123635000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002560"
      unitRef="USD">248000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002561"
      unitRef="USD">123883000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002562"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56002563"
      unitRef="USD">123883000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2017-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002564"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002565"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002566"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002567"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56002568"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2017-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c56002569"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56002570"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c56002571"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56002572"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c56002573"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c56002574"
      unitRef="USD">128504000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002575"
      unitRef="USD">248000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002576"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002577"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002578"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002537"
      unitRef="USD">99600000</us-gaap:Goodwill>
    <prlb:BusinessCombinationWorkingCapitalAdjustment
      contextRef="d_2018-01-01_2018-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002538"
      unitRef="USD">200000</prlb:BusinessCombinationWorkingCapitalAdjustment>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434378">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted Average Useful Life&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Useful Life (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Remaining (in years)&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td colspan="4" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Intangible Assets with finite lives:&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Marketing assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;930&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(527&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;403&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;930&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(434&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;496&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Non-compete agreement&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;270&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(222&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;270&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(206&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;64&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0 - 5.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Trade secrets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(233&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Trade names&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,080&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Software technology&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,229&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2,275&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;12,229&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(997&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,232&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,106&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,964&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,569&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,501&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.0 - 9.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 20%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;25,829&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,460&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24,829&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(4,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19,850&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c56002609"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c56002610"
      unitRef="USD">527000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c56002611"
      unitRef="USD">403000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c56002612"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c56002613"
      unitRef="USD">434000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c56002614"
      unitRef="USD">496000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c56002616">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c56002618">P4Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-4"
      id="c56002619"
      unitRef="USD">270000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c56002620"
      unitRef="USD">222000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c56002621"
      unitRef="USD">48000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-4"
      id="c56002622"
      unitRef="USD">270000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c56002623"
      unitRef="USD">206000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c56002624"
      unitRef="USD">64000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember"
      id="c56002625">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember"
      id="c56002627">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      id="c56002628">P3Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-4"
      id="c56002629"
      unitRef="USD">250000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-4"
      id="c56002630"
      unitRef="USD">250000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-3"
      id="c56002631"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-4"
      id="c56002632"
      unitRef="USD">250000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-3"
      id="c56002633"
      unitRef="USD">233000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      decimals="-3"
      id="c56002634"
      unitRef="USD">17000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      id="c56002636">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeSecretsMember"
      id="c56002638">P0Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-4"
      id="c56002639"
      unitRef="USD">1080000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-4"
      id="c56002640"
      unitRef="USD">1080000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c56002641"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-4"
      id="c56002642"
      unitRef="USD">1080000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-4"
      id="c56002643"
      unitRef="USD">540000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-4"
      id="c56002644"
      unitRef="USD">540000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      id="c56002646">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      id="c56002648">P0Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002649"
      unitRef="USD">13229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002650"
      unitRef="USD">2275000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002651"
      unitRef="USD">10954000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002652"
      unitRef="USD">12229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002653"
      unitRef="USD">997000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c56002654"
      unitRef="USD">11232000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c56002656">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c56002658">P8Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-4"
      id="c56002659"
      unitRef="USD">10070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c56002660"
      unitRef="USD">4106000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c56002661"
      unitRef="USD">5964000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-4"
      id="c56002662"
      unitRef="USD">10070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c56002663"
      unitRef="USD">2569000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c56002664"
      unitRef="USD">7501000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember"
      id="c56002665">P6Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember"
      id="c56002667">P9Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2019-01-01_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      id="c56002668">P3Y9M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002669"
      unitRef="USD">25829000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56002670"
      unitRef="USD">8460000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002671"
      unitRef="USD">17369000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002672"
      unitRef="USD">24829000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002673"
      unitRef="USD">4979000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56002674"
      unitRef="USD">19850000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56002542"
      unitRef="USD">3500000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56002543"
      unitRef="USD">3200000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56002544"
      unitRef="USD">500000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2017-01-01_2017-12-31_BusinessAcquisitionAxis-RapidMember"
      decimals="-5"
      id="c56002545"
      unitRef="USD">8200000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <prlb:AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone
      contextRef="i_2017-12-31"
      decimals="-6"
      id="c56002548"
      unitRef="USD">5000000.0</prlb:AssetAcquisitionContingentConsiderationArrangementUponCompletionOfMilestone>
    <prlb:AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod contextRef="d_2017-01-01_2017-12-31" id="c56002549">P24M</prlb:AssetAcquisitionsContingentConsiderationLiabilityMilestonePeriod>
    <prlb:AssetAcquisitionsContingentConsiderationLiability
      contextRef="i_2019-12-31"
      decimals="-6"
      id="c56002550"
      unitRef="USD">1000000.0</prlb:AssetAcquisitionsContingentConsiderationLiability>
    <prlb:AssetAcquisitionsContingentConsiderationLiability
      contextRef="i_2018-12-31"
      decimals="-6"
      id="c56002551"
      unitRef="USD">4000000.0</prlb:AssetAcquisitionsContingentConsiderationLiability>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434379">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 82%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2020&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2021&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2022&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,016&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2023&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,813&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,400&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,108&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total estimated amortization expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002680"
      unitRef="USD">3016000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002681"
      unitRef="USD">3016000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002682"
      unitRef="USD">3016000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002683"
      unitRef="USD">2813000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56002684"
      unitRef="USD">1400000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002685"
      unitRef="USD">4108000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002686"
      unitRef="USD">17369000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FairValueDisclosuresTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434380">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;7&lt;/em&gt; &#x2013; Fair Value Measurements&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;820,&lt;/em&gt;&lt;i&gt; Fair Value Measuremen&lt;/i&gt;t (ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;820&lt;/em&gt;), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;820&lt;/em&gt; also establishes a fair value hierarchy which requires classification based on observable and unobservable inputs when measuring fair value. There are &lt;em style="font-weight: inherit; font-style: normal;"&gt;three&lt;/em&gt; levels of inputs that &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be used to measure fair value:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&lt;/i&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;1&#x2014;Quoted&lt;/em&gt; prices in active markets for identical assets or liabilities.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&lt;/i&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2&#x2014;Observable&lt;/em&gt; inputs other than Level&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt;1&lt;/em&gt; prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&lt;/i&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;3&#x2014;Unobservable&lt;/em&gt; inputs that are supported by little or &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; market activity and that are significant to the fair value of the assets or liabilities.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s cash equivalents measured at fair value as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt;1&lt;/em&gt; inputs.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following tables summarizes financial assets as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; measured at fair value on a recurring basis:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Financial Assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Money market mutual funds&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;68,962&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,943&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;68,962&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,943&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434381">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Financial Assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Money market mutual funds&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;68,962&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,943&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;68,962&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,943&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002718"
      unitRef="USD">68962000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002719"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002720"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002721"
      unitRef="USD">8943000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002722"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002723"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002724"
      unitRef="USD">68962000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002725"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002726"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002727"
      unitRef="USD">8943000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002728"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2018-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c56002729"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:InvestmentTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434382">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;8&lt;/em&gt; &#x2013; Marketable Securities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#x2019;s ability and intent to hold these securities to maturity. Information regarding the Company&#x2019;s short-term and long-term marketable securities as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; is as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Amortized Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,268&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,944&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(12&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;27,012&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,204&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,210&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;Commercial paper&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,491&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,491&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,484&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,506&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;112&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(22&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,487&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Amortized Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,843&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(88&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,755&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;31,769&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(96&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;31,673&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,509&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(33&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,477&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,208&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,183&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;70,329&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(242&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;70,088&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Fair values for the U.S. government agency securities and corporate debt securities are primarily determined based on quoted market prices (Level &lt;em style="font-weight: inherit; font-style: normal;"&gt;1&lt;/em&gt;). Fair values for the U.S. municipal securities, commercial paper and certificates of deposit are primarily determined using dealer quotes or quoted market prices for similar securities (Level &lt;em style="font-weight: inherit; font-style: normal;"&gt;2&lt;/em&gt;).&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company tests for other than temporary losses on a quarterly basis and has considered the unrealized losses indicated above to be temporary in nature. The investment policy adopted by the Company dictates that only investments in quality, highly rated debt securities are permitted. Those unrealized losses displayed above are the result of macroeconomic factors and are indicative of neither the quality of the underlying security nor the issuer&#x2019;s ability to pay its debt. The Company intends, and has the ability, to hold the investments to maturity and recover the full principal.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Classification of marketable securities as current or non-current is based upon the security&#x2019;s maturity date as of the date of these financial statements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. Actual maturities &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;differ from contractual maturities because the issuers of the securities &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;have the right to prepay obligations without prepayment penalties.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 83%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due in one year or less&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35,437&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due after one year through five years&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,960&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&gt;
  </us-gaap:InvestmentTextBlock>
    <us-gaap:HeldToMaturitySecuritiesTextBlock
      contextRef="d_2019-01-01_2019-12-31"
      id="c7F5CFB05-6217-4EAF-A1B9-C28923DF194A">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Amortized Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,268&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,944&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(12&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;27,012&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,204&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,210&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;Commercial paper&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,491&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,491&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,484&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,506&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;112&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(22&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,487&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2018&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Amortized Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,843&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(88&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,755&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;31,769&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(96&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;31,673&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,509&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(33&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,477&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,208&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,183&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;70,329&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(242&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;70,088&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:HeldToMaturitySecuritiesTextBlock>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002745"
      unitRef="USD">6274000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002746"
      unitRef="USD">1000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002747"
      unitRef="USD">7000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002748"
      unitRef="USD">6268000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002749"
      unitRef="USD">26944000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-4"
      id="c56002750"
      unitRef="USD">80000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002751"
      unitRef="USD">12000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002752"
      unitRef="USD">27012000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002753"
      unitRef="USD">10204000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002754"
      unitRef="USD">9000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002755"
      unitRef="USD">3000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-4"
      id="c56002756"
      unitRef="USD">10210000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c56002757"
      unitRef="USD">3491000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c56002758"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c56002759"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c56002760"
      unitRef="USD">3491000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002761"
      unitRef="USD">1484000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002762"
      unitRef="USD">22000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002763"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002764"
      unitRef="USD">1506000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002765"
      unitRef="USD">48397000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002766"
      unitRef="USD">112000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002767"
      unitRef="USD">22000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002768"
      unitRef="USD">48487000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002777"
      unitRef="USD">16843000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002778"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002779"
      unitRef="USD">88000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c56002780"
      unitRef="USD">16755000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002781"
      unitRef="USD">31769000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002782"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002783"
      unitRef="USD">96000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2018-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c56002784"
      unitRef="USD">31673000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002785"
      unitRef="USD">17509000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002786"
      unitRef="USD">1000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002787"
      unitRef="USD">33000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2018-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c56002788"
      unitRef="USD">17477000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002789"
      unitRef="USD">4208000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002790"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002791"
      unitRef="USD">25000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2018-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c56002792"
      unitRef="USD">4183000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002793"
      unitRef="USD">70329000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002794"
      unitRef="USD">1000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002795"
      unitRef="USD">242000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002796"
      unitRef="USD">70088000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434385">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 83%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due in one year or less&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35,437&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due after one year through five years&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,960&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002799"
      unitRef="USD">35437000</us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount>
    <us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56002800"
      unitRef="USD">12960000</us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002801"
      unitRef="USD">48397000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434386">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;9&lt;/em&gt; &#x2013; Property and Equipment&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property and equipment consists of the following:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Land&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,098&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,566&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Buildings and improvements&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75,843&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;72,819&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Machinery and equipment&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;208,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,416&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Computer hardware and software&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,953&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;22,323&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Leasehold improvements&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,341&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,330&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Construction in progress&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;54,313&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;25,279&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;385,502&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,733&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(121,790&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(95,732&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Property and equipment, net&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;Depreciation expense for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; was $27.4&#160;million, $23.5 million and $18.0 million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434387">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Land&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,098&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,566&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Buildings and improvements&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75,843&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;72,819&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Machinery and equipment&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;208,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,416&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Computer hardware and software&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,953&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;22,323&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Leasehold improvements&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,341&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,330&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Construction in progress&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;54,313&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;25,279&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;385,502&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,733&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(121,790&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(95,732&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Property and equipment, net&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:Land
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002814"
      unitRef="USD">14098000</us-gaap:Land>
    <us-gaap:Land
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002815"
      unitRef="USD">10566000</us-gaap:Land>
    <us-gaap:BuildingsAndImprovementsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002816"
      unitRef="USD">75843000</us-gaap:BuildingsAndImprovementsGross>
    <us-gaap:BuildingsAndImprovementsGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002817"
      unitRef="USD">72819000</us-gaap:BuildingsAndImprovementsGross>
    <us-gaap:MachineryAndEquipmentGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002818"
      unitRef="USD">208954000</us-gaap:MachineryAndEquipmentGross>
    <us-gaap:MachineryAndEquipmentGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002819"
      unitRef="USD">185416000</us-gaap:MachineryAndEquipmentGross>
    <prlb:ComputerHardwareAndSoftwareGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002820"
      unitRef="USD">24953000</prlb:ComputerHardwareAndSoftwareGross>
    <prlb:ComputerHardwareAndSoftwareGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002821"
      unitRef="USD">22323000</prlb:ComputerHardwareAndSoftwareGross>
    <us-gaap:LeaseholdImprovementsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002822"
      unitRef="USD">7341000</us-gaap:LeaseholdImprovementsGross>
    <us-gaap:LeaseholdImprovementsGross
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56002823"
      unitRef="USD">7330000</us-gaap:LeaseholdImprovementsGross>
    <us-gaap:ConstructionInProgressGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002824"
      unitRef="USD">54313000</us-gaap:ConstructionInProgressGross>
    <us-gaap:ConstructionInProgressGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002825"
      unitRef="USD">25279000</us-gaap:ConstructionInProgressGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002826"
      unitRef="USD">385502000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002827"
      unitRef="USD">323733000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56002828"
      unitRef="USD">121790000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002829"
      unitRef="USD">95732000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002830"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002831"
      unitRef="USD">228001000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56002807"
      unitRef="USD">27400000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56002808"
      unitRef="USD">23500000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-6"
      id="c56002809"
      unitRef="USD">18000000.0</us-gaap:Depreciation>
    <us-gaap:InventoryDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434388">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;10&lt;/em&gt; &#x2013; Inventory&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-cost method, which approximates &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-in, &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt;-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s inventory consists of the following:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,818&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,560&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Work in process&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;501&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;792&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total inventory&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,319&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Allowance for obsolescence&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(244&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(265&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Inventory, net of allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,075&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,087&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434389">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,818&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,560&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Work in process&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;501&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;792&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total inventory&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,319&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Allowance for obsolescence&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(244&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(265&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Inventory, net of allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,075&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,087&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterials
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002840"
      unitRef="USD">9818000</us-gaap:InventoryRawMaterials>
    <us-gaap:InventoryRawMaterials
      contextRef="i_2018-12-31"
      decimals="-4"
      id="c56002841"
      unitRef="USD">9560000</us-gaap:InventoryRawMaterials>
    <us-gaap:InventoryWorkInProcess
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002842"
      unitRef="USD">501000</us-gaap:InventoryWorkInProcess>
    <us-gaap:InventoryWorkInProcess
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002843"
      unitRef="USD">792000</us-gaap:InventoryWorkInProcess>
    <us-gaap:InventoryGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002844"
      unitRef="USD">10319000</us-gaap:InventoryGross>
    <us-gaap:InventoryGross
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002845"
      unitRef="USD">10352000</us-gaap:InventoryGross>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002846"
      unitRef="USD">244000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002847"
      unitRef="USD">265000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002848"
      unitRef="USD">10075000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56002849"
      unitRef="USD">10087000</us-gaap:InventoryNet>
    <us-gaap:DebtDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434390">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;11&lt;/em&gt; &#x2013; Financing Obligations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company had no financing obligations as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018.&lt;/em&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DebtDisclosureTextBlock>
    <us-gaap:LineOfCredit
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56002851"
      unitRef="USD">0</us-gaap:LineOfCredit>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434391">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;12&lt;/em&gt; &#x2013; Employee Benefit Plans&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company maintains a &lt;em style="font-weight: inherit; font-style: normal;"&gt;401&lt;/em&gt;(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over 20 hours/week) employee becomes a participant after completing &lt;span style="-sec-ix-hidden:c56002857"&gt;three&lt;/span&gt; months of employment. Employees &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;elect to contribute up to 50 percent of regular gross pay, subject to federal law limits on the dollar amount that participants &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;contribute to the plan, each calendar year. The Company matches part of the employee contributions and &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;make a discretionary contribution to the plan. Total employer contributions were approximately $3.1&#160;million, $2.7 million and $1.9 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $0.3&#160;million in each of the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="INF"
      id="c56002856"
      unitRef="Pure">20</prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="1"
      id="c56002858"
      unitRef="Pure">0.50</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002859"
      unitRef="USD">3100000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002860"
      unitRef="USD">2700000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2017-01-01_2017-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002861"
      unitRef="USD">1900000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c56002865"
      unitRef="USD">300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434392">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;13&lt;/em&gt; &#x2013; Stock-Based Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has &lt;em style="font-weight: inherit; font-style: normal;"&gt;two&lt;/em&gt; equity incentive plans: the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2000&lt;/em&gt; Stock Option Plan (&lt;em style="font-weight: inherit; font-style: normal;"&gt;2000&lt;/em&gt; Plan) and the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Long-Term Incentive Plan (&lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan). Upon the adoption of the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan on &lt;em style="font-weight: inherit; font-style: normal;"&gt; February&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;21,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012,&lt;/em&gt; all shares that were reserved but &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; issued under the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2000&lt;/em&gt; Plan were assumed by the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan. &lt;em style="font-weight: inherit; font-style: normal;"&gt;No&lt;/em&gt; additional&#160;awards will be issued under the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2000&lt;/em&gt; Plan. Under the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, performance stock, stock units, other stock-based awards and cash incentive awards. Awards under the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan have a maximum term of &lt;em style="font-weight: inherit; font-style: normal;"&gt;ten&lt;/em&gt; years from the date of grant. The compensation committee of the board of directors &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements, and the compensation committee will determine whether such measures have been achieved. The per share exercise price of stock options and SARs granted under the &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan generally &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be less than the fair market value of a share of our common stock on the date of the grant. Restricted stock is valued at fair market value on the date of grant.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#x2019;s common stock at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for &lt;span style="-sec-ix-hidden:c56002891"&gt;six&lt;/span&gt;-month offering periods with a single purchase period, and at the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company&#x2019;s common stock on the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; trading day of the offering period or on the last trading day of the offering period. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718&lt;/em&gt; using the component measurement approach and the Black-Scholes standard option pricing model.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Employees purchased 41,615&#160;and 33,562 shares of common stock under the ESPP at an average exercise price of $86.70&#160;and $85.61 during &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;1,168,830&#160;shares remained available for future issuance under the ESPP.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company determines its stock-based compensation in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;718,&lt;/em&gt; which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#x2019;s best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include its expected term and&#160;stock price volatility.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#160;the Company's&#160;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#160;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of &lt;span style="-sec-ix-hidden:c56002904"&gt;zero&lt;/span&gt; in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes stock-based compensation expense for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Stock options and other&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,591&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,113&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Employee stock purchase plan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,190&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;815&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;604&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,558&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cost of revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,056&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,543&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;970&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating expenses:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Marketing and sales&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,632&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,942&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,429&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Research and development&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,851&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,517&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,091&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;General and administrative&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,242&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,926&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,068&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,558&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Stock Options&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017:&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.35 - 2.58%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.52 - 3.07%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.24 - 2.36%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.52 - 42.74%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41.68 - 42.22%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.68 - 44.68%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted average grant date fair value&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$47.84&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$50.08&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$32.26&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes stock option activity and the weighted average exercise price for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017:&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Exercise Price&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;569,639&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;60,100&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;69.06&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(187,313&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35.93&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,371&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61.02&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;399,055&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;51.13&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;36,600&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110.59&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(155,765&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;38.92&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;252,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;64.71&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,708&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(16,079&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(13,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.50&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;276,266&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;72.38&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Exercisable at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;152,423&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;59.26&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The outstanding options have a term of &lt;em style="font-weight: inherit; font-style: normal;"&gt;10&lt;/em&gt; years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a &lt;span style="-sec-ix-hidden:c56002919"&gt;four&lt;/span&gt;- or &lt;span style="-sec-ix-hidden:c56002920"&gt;five&lt;/span&gt;-year period, beginning on the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For directors, options generally become exercisable in full on the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; anniversary of the grant date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The total intrinsic value of options exercised during the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; was $0.9&#160;million, $13.0 million and $7.0 million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;For options outstanding at &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;the weighted-average remaining contractual term was 5.5&#160;years and the aggregate intrinsic value was $8.6&#160;million. For options exercisable at &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;the weighted-average remaining contractual term was 3.6&#160;years and the aggregate intrinsic value was $6.5&#160;million. Refer to the table below for additional information.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes information about stock options outstanding at &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019:&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="8" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 31%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Outstanding, Vested and Expected to Vest&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="5" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Exercisable&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;b&gt;Range of Exercise Prices&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Number Outstanding&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Remaining Contractual Life&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Exercise Price ($)&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Number Exercisable&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Exercise Price ($)&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;7.76 to 31.43&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;23,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.98&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25.04&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;23,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25.04&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31.44 to 66.87&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;125,022&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.42&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;85,656&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;66.88 to 96.20&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;45,255&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70.98&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;33,445&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70.41&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;96.21 to 123.10&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;82,106&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;8.68&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;107.79&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;9,439&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110.36&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; there was $3.6&#160;million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of 2.6&#160;years. The total fair value of options vested was $1.5&#160;million, $1.5 million and $2.8 million for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Restricted Stock&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The &lt;em style="font-weight: inherit; font-style: normal;"&gt;2012&lt;/em&gt; Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a &lt;span style="-sec-ix-hidden:c56002949"&gt;four&lt;/span&gt;- or &lt;span style="-sec-ix-hidden:c56002950"&gt;five&lt;/span&gt;-year period, beginning on the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For directors, restrictions generally lapse in full on the &lt;em style="font-weight: inherit; font-style: normal;"&gt;first&lt;/em&gt; anniversary of the grant date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes restricted stock activity for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017:&lt;/em&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Restricted&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Awards&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;215,105&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;62.78&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,744&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.70&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(60,102&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.60&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(30,916&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61.99&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;334,831&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.29&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106,855&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115.41&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(86,191&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.64&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,574&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;68.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,921&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79.85&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,471&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(92,597&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,822&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;87.58&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;314,973&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.55&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;there was $21.1&#160;million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.6&#160;years.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Performance Stock&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between &lt;span style="-sec-ix-hidden:c56002958"&gt;0&lt;/span&gt; percent and 150 percent of that target number capable of being earned and vesting at the end of a &lt;span style="-sec-ix-hidden:c56002960"&gt;three&lt;/span&gt;-year performance period depending on the Company&#x2019;s performance in the final year of the performance period and the award recipient&#x2019;s continued employment.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes performance stock activity for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017:&lt;/em&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Performance&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Awards&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,707&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,707&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;20,006&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.75&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,427&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;52,140&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;76.54&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,434&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;104.99&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(61,816&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;88.06&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,375&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;105.37&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,383&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;there was $0.1&#160;million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 0.1&#160;years.&#160;The decrease in unrecognized stock-based compensation costs related to non-vested performance stock in &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt; when compared to &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; is driven by a decrease in the number of shares expected to vest at the end of future performance periods.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Employee Stock Purchase Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017:&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="7" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.59 - 2.35%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.06 - 2.33%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.97 - 1.48%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (months)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.63 - 53.57%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;31.50 - 37.36%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;24.49 - 34.51%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/&gt;
  </us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c56002890"
      unitRef="Pure">0.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c56002892"
      unitRef="Pure">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c56002895"
      unitRef="Share">41615</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c56002896"
      unitRef="Share">33562</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c56002897"
      unitRef="Share">86.70</prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased>
    <prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c56002898"
      unitRef="Share">85.61</prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c56002901"
      unitRef="Share">1168830</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434393">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Stock options and other&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,591&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,113&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,954&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Employee stock purchase plan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,190&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;815&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;604&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,558&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cost of revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,056&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,543&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;970&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating expenses:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Marketing and sales&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,632&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,942&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,429&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Research and development&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,851&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,517&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,091&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;General and administrative&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,242&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,926&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,068&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,558&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c56003009"
      unitRef="USD">9591000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c56003010"
      unitRef="USD">10113000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c56003011"
      unitRef="USD">7954000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="-4"
      id="c56002982"
      unitRef="USD">1190000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember"
      decimals="-3"
      id="c56002983"
      unitRef="USD">815000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-ESPPMember"
      decimals="-3"
      id="c56002987"
      unitRef="USD">604000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002984"
      unitRef="USD">10781000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002985"
      unitRef="USD">10928000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56002986"
      unitRef="USD">8558000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c56002988"
      unitRef="USD">2056000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c56002993"
      unitRef="USD">1543000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-4"
      id="c56002994"
      unitRef="USD">970000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c56002989"
      unitRef="USD">2632000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c56002992"
      unitRef="USD">1942000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c56002995"
      unitRef="USD">1429000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-3"
      id="c56002990"
      unitRef="USD">1851000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-3"
      id="c56002991"
      unitRef="USD">1517000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-3"
      id="c56003002"
      unitRef="USD">1091000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c56002996"
      unitRef="USD">4242000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c56002999"
      unitRef="USD">5926000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c56003000"
      unitRef="USD">5068000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56002997"
      unitRef="USD">10781000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56002998"
      unitRef="USD">10928000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003001"
      unitRef="USD">8558000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434394">
    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.35 - 2.58%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.52 - 3.07%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.24 - 2.36%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.52 - 42.74%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41.68 - 42.22%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.68 - 44.68%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted average grant date fair value&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$47.84&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$50.08&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$32.26&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003031"
      unitRef="Pure">0.0235</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003033"
      unitRef="Pure">0.0258</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003034"
      unitRef="Pure">0.0252</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003036"
      unitRef="Pure">0.0307</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003037"
      unitRef="Pure">0.0224</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003039"
      unitRef="Pure">0.0236</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c56003041">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c56003044">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c56003047">P6Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003049"
      unitRef="Pure">0.4252</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003051"
      unitRef="Pure">0.4274</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003052"
      unitRef="Pure">0.4168</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003054"
      unitRef="Pure">0.4222</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003055"
      unitRef="Pure">0.4268</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003057"
      unitRef="Pure">0.4468</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c56003059"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c56003062"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c56003065"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c56003068"
      unitRef="USDPerShare">47.84</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c56003071"
      unitRef="USDPerShare">50.08</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c56003074"
      unitRef="USDPerShare">32.26</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434395">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Exercise Price&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;569,639&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;60,100&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;69.06&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(187,313&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35.93&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,371&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61.02&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;399,055&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;51.13&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;36,600&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110.59&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(155,765&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;38.92&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;252,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;64.71&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,708&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(16,079&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Cancelled&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(13,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.50&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;276,266&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;72.38&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Exercisable at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;152,423&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;59.26&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2016-12-31"
      decimals="INF"
      id="c56003082"
      unitRef="Share">569639</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2016-12-31"
      decimals="INF"
      id="c56003083"
      unitRef="USDPerShare">45.00</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003084"
      unitRef="Share">60100</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003085"
      unitRef="USDPerShare">69.06</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003086"
      unitRef="Share">187313</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003087"
      unitRef="USDPerShare">35.93</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003088"
      unitRef="Share">43371</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2017-01-01_2017-12-31"
      decimals="INF"
      id="c56003089"
      unitRef="USDPerShare">61.02</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2017-12-31"
      decimals="INF"
      id="c56003090"
      unitRef="Share">399055</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2017-12-31"
      decimals="INF"
      id="c56003091"
      unitRef="USDPerShare">51.13</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003092"
      unitRef="Share">36600</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003093"
      unitRef="USDPerShare">110.59</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003094"
      unitRef="Share">155765</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003095"
      unitRef="USDPerShare">38.92</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003096"
      unitRef="Share">27274</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c56003097"
      unitRef="USDPerShare">74.35</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56003098"
      unitRef="Share">252616</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c56003099"
      unitRef="USDPerShare">64.71</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003100"
      unitRef="Share">53708</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003101"
      unitRef="USDPerShare">105.81</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003102"
      unitRef="Share">16079</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003103"
      unitRef="USDPerShare">48.67</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003104"
      unitRef="Share">13979</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c56003105"
      unitRef="USDPerShare">89.50</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56003106"
      unitRef="Share">276266</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56003107"
      unitRef="USDPerShare">72.38</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56003108"
      unitRef="Share">152423</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c56003109"
      unitRef="USDPerShare">59.26</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56002927"
      unitRef="USD">900000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-6"
      id="c56002928"
      unitRef="USD">13000000.0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-6"
      id="c56002929"
      unitRef="USD">7000000.0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 contextRef="d_2019-01-01_2019-12-31" id="c56002930">P5Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56002931"
      unitRef="USD">8600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1 contextRef="d_2019-01-01_2019-12-31" id="c56002932">P3Y7M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56002933"
      unitRef="USD">6500000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1>
    <us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434456">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="8" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 31%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Outstanding, Vested and Expected to Vest&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="5" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Exercisable&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;b&gt;Range of Exercise Prices&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Number Outstanding&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Remaining Contractual Life&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Exercise Price ($)&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Number Exercisable&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;Weighted Average Exercise Price ($)&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;7.76 to 31.43&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;23,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.98&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25.04&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;23,883&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25.04&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31.44 to 66.87&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;125,022&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.42&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;85,656&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.81&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;66.88 to 96.20&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;45,255&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70.98&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;33,445&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70.41&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 25%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; text-align: center;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;96.21 to 123.10&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"/&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;82,106&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;8.68&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;107.79&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;9,439&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110.36&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c561782451"
      unitRef="USDPerShare">7.76</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c56178245"
      unitRef="USDPerShare">31.43</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c561782461"
      unitRef="Share">23883</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      id="c56178247">P1Y11M23D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c56178248"
      unitRef="USDPerShare">25.04</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c56178249"
      unitRef="Share">23883</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c56178250"
      unitRef="USDPerShare">25.04</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c561782521"
      unitRef="USDPerShare">31.44</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c56178252"
      unitRef="USDPerShare">66.87</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c56178253"
      unitRef="Share">125022</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      id="c56178254">P4Y5M1D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c56178255"
      unitRef="USDPerShare">58.67</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c56178256"
      unitRef="Share">85656</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c56178257"
      unitRef="USDPerShare">58.81</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c561782591"
      unitRef="USDPerShare">66.88</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c56178259"
      unitRef="USDPerShare">96.20</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c56178260"
      unitRef="Share">45255</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      id="c56178261">P4Y5M26D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c56178262"
      unitRef="USDPerShare">70.98</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c56178263"
      unitRef="Share">33445</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c56178264"
      unitRef="USDPerShare">70.41</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c561782661"
      unitRef="USDPerShare">96.21</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c56178266"
      unitRef="USDPerShare">123.10</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c56178267"
      unitRef="Share">82106</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2019-01-01_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      id="c56178268">P8Y8M4D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c56178269"
      unitRef="USDPerShare">107.79</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c56178270"
      unitRef="Share">9439</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2019-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c56178271"
      unitRef="USDPerShare">110.36</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-5"
      id="c56002939"
      unitRef="USD">3600000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c56002940">P2Y7M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56002941"
      unitRef="USD">1500000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56002942"
      unitRef="USD">1500000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56002943"
      unitRef="USD">2800000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434397">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Restricted&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Awards&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;215,105&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;62.78&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,744&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.70&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(60,102&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.60&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(30,916&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61.99&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;334,831&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.29&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106,855&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115.41&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(86,191&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.64&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,574&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;68.67&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,921&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79.85&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,471&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(92,597&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77.25&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,822&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;87.58&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;314,973&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.55&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2016-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003152"
      unitRef="Share">215105</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2016-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003153"
      unitRef="USDPerShare">62.78</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003154"
      unitRef="Share">210744</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003155"
      unitRef="USDPerShare">63.70</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003156"
      unitRef="Share">60102</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003157"
      unitRef="USDPerShare">63.60</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003158"
      unitRef="Share">30916</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003159"
      unitRef="USDPerShare">61.99</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003160"
      unitRef="Share">334831</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003161"
      unitRef="USDPerShare">63.29</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003162"
      unitRef="Share">106855</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003163"
      unitRef="USDPerShare">115.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003164"
      unitRef="Share">86191</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003165"
      unitRef="USDPerShare">63.64</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003166"
      unitRef="Share">31574</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003167"
      unitRef="USDPerShare">68.67</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003168"
      unitRef="Share">323921</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003169"
      unitRef="USDPerShare">79.85</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003170"
      unitRef="Share">115471</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003171"
      unitRef="USDPerShare">106.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003172"
      unitRef="Share">92597</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003173"
      unitRef="USDPerShare">77.25</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003174"
      unitRef="Share">31822</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003175"
      unitRef="USDPerShare">87.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003176"
      unitRef="Share">314973</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c56003177"
      unitRef="USDPerShare">89.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-5"
      id="c56002956"
      unitRef="USD">21100000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      id="c56002957">P2Y7M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="1"
      id="c56002959"
      unitRef="Pure">1.50</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit>
    <us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434398">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Performance&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Stock Awards&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at January 1, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,707&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2017&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,707&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;20,006&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.75&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,427&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2018&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;52,140&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;76.54&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,434&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;104.99&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(61,816&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;88.06&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,375&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;105.37&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2019&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,383&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;58.35&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003188"
      unitRef="Share">0</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2016-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003189"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003190"
      unitRef="Share">25707</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003191"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003192"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003193"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003194"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2017-01-01_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003195"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003196"
      unitRef="Share">25707</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003197"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003198"
      unitRef="Share">20006</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003199"
      unitRef="USDPerShare">105.75</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003200"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003201"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003202"
      unitRef="Share">6427</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003203"
      unitRef="USDPerShare">58.35</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003204"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003205"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003206"
      unitRef="Share">52140</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003207"
      unitRef="USDPerShare">76.54</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003208"
      unitRef="Share">21434</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003209"
      unitRef="USDPerShare">104.99</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003210"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003211"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003212"
      unitRef="Share">-61816</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003213"
      unitRef="USDPerShare">88.06</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003214"
      unitRef="Share">2375</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003215"
      unitRef="USDPerShare">105.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003216"
      unitRef="Share">9383</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c56003217"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-5"
      id="c56002963"
      unitRef="USD">100000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c56002964">P0Y1M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434399">
    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="7" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.59 - 2.35%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.06 - 2.33%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.97 - 1.48%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (months)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.63 - 53.57%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;31.50 - 37.36%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;24.49 - 34.51%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003236"
      unitRef="Pure">0.0159</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003238"
      unitRef="Pure">0.0235</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003239"
      unitRef="Pure">0.0206</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003241"
      unitRef="Pure">0.0233</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003242"
      unitRef="Pure">0.0097</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003244"
      unitRef="Pure">0.0148</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1 contextRef="d_2019-01-01_2019-12-31" id="c56003246">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1 contextRef="d_2018-01-01_2018-12-31" id="c56003249">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1 contextRef="d_2017-01-01_2017-12-31" id="c56003252">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003254"
      unitRef="Pure">0.4263</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003256"
      unitRef="Pure">0.5357</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_RangeAxis-MinimumMember"
      decimals="3"
      id="c56003257"
      unitRef="Pure">0.3150</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003259"
      unitRef="Pure">0.3736</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2017-01-01_2017-12-31_RangeAxis-MinimumMember"
      decimals="4"
      id="c56003260"
      unitRef="Pure">0.2449</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2017-01-01_2017-12-31_RangeAxis-MaximumMember"
      decimals="4"
      id="c56003262"
      unitRef="Pure">0.3451</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003264"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003267"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003270"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:LesseeOperatingLeasesTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434400">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;14&lt;/em&gt; &#x2013; Leases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s significant accounting policies are disclosed in Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;2&lt;/em&gt; to the Consolidated Financial Statements included in its Annual Report on Form &lt;em style="font-weight: inherit; font-style: normal;"&gt;10&lt;/em&gt;-K for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019. &lt;/em&gt;Significant changes to the Company&#x2019;s accounting policies as a result of adopting ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842&lt;/em&gt; are discussed below.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for leases in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842.&lt;/em&gt; The Company adopted&#160;the standard as of&#160;&lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019, &lt;/em&gt;using the alternative transition method provided under ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842,&lt;/em&gt; which allowed the Company to initially apply the new lease standard at the adoption date (the "effective date method"). Under the effective date method, comparative periods are presented in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;840&lt;/em&gt; and do &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; include any retrospective adjustments to reflect the adoption of ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842.&lt;/em&gt; The Company elected the package of practical expedients permitted under the transition guidance within the new standard. The Company did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; elect the hindsight practical expedient. The Company recorded a net increase of $13.1 million to its operating lease assets and liabilities on &lt;em style="font-weight: inherit; font-style: normal;"&gt; January 1, 2019. &lt;/em&gt;The adoption did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; result in a cumulative-effect adjustment to the opening balance of retained earnings. The adoption of ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842&lt;/em&gt; did &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; have a material impact on the Company's consolidated statements of comprehensive income, shareholders' equity or cash flows as of the adoption date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment. The leases have remaining lease terms of &lt;span style="-sec-ix-hidden:c56003286"&gt;one&lt;/span&gt; year to 10 years. Leases with an initial term of &lt;em style="font-weight: inherit; font-style: normal;"&gt;12&lt;/em&gt; months or less are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;the operating lease liability does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; include any options to extend or terminate leases. The Company currently has no finance leases.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#x2019;s leases do &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Supplemental balance sheet information related to leases was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating lease assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,425&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,340&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Long-term operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,565&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Three Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Twelve Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 64%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;976&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,960&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Variable lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;228&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,039&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,204&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,999&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Maturities of operating lease liabilities as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 (&lt;/em&gt;in accordance with ASC &lt;em style="font-weight: inherit; font-style: normal;"&gt;842&lt;/em&gt;) were as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;&lt;span style="text-decoration: underline; "&gt;Year Ending December 31,&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2020&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,034&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2021&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,835&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2022&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2023&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,064&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;498&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;After 2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,613&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total future minimum lease payments&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,678&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Less interest&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(773&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Present value of lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;we have no operating leases that have &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; yet commenced.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Weighted average remaining lease term and&#160;discount rate&#160;was as follows:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted Average Remaining Lease Term (Years)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted Average Discount Rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.6%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Supplemental cash flow information related to leases was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Twelve Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid for amounts included in the measurement of operating lease liabilities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Operating cash flows from operating leases&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,020&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Lease assets obtained in exchange for new operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,921&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;"/&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:LesseeOperatingLeasesTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"
      decimals="-5"
      id="c56003282"
      unitRef="USD">13100000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i_2019-12-31_LeaseArrangementTypeAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember"
      id="c56003287">P10Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <prlb:LesseeFinancialLeaseLiabilityNumberOfLeases
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003291"
      unitRef="Pure">0</prlb:LesseeFinancialLeaseLiabilityNumberOfLeases>
    <prlb:ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434401">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating lease assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,425&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,340&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Long-term operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,565&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:ScheduleOfOperatingLeaseAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003302"
      unitRef="USD">11425000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56003303"
      unitRef="USD">3340000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003304"
      unitRef="USD">8565000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003305"
      unitRef="USD">11905000</us-gaap:OperatingLeaseLiability>
    <prlb:ScheduleOfLeaseExpenseTableTextBlock
      contextRef="d_2019-01-01_2019-12-31"
      id="c4B482F31-0605-4F1C-96C2-B74197E0DBBE">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Three Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Twelve Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 64%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Operating lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;976&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,960&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Variable lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;228&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,039&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total lease cost&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,204&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,999&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Twelve Months Ended&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid for amounts included in the measurement of operating lease liabilities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Operating cash flows from operating leases&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,020&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Lease assets obtained in exchange for new operating lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,921&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:ScheduleOfLeaseExpenseTableTextBlock>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2019-10-01_2019-12-31"
      decimals="-3"
      id="c56003312"
      unitRef="USD">976000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56003313"
      unitRef="USD">3960000</us-gaap:OperatingLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2019-10-01_2019-12-31"
      decimals="-3"
      id="c56003315"
      unitRef="USD">228000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003316"
      unitRef="USD">1039000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2019-10-01_2019-12-31"
      decimals="-3"
      id="c56003318"
      unitRef="USD">1204000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003319"
      unitRef="USD">4999000</us-gaap:LeaseCost>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434404">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;&lt;span style="text-decoration: underline; "&gt;Year Ending December 31,&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2020&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,034&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2021&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,835&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2022&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2023&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,064&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;498&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;After 2024&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,613&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total future minimum lease payments&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,678&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Less interest&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(773&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Present value of lease liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003336"
      unitRef="USD">4034000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003337"
      unitRef="USD">2835000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003338"
      unitRef="USD">2634000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003339"
      unitRef="USD">1064000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003340"
      unitRef="USD">498000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003341"
      unitRef="USD">1613000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003342"
      unitRef="USD">12678000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003343"
      unitRef="USD">773000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003344"
      unitRef="USD">11905000</us-gaap:OperatingLeaseLiability>
    <prlb:LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003295"
      unitRef="Pure">0</prlb:LesseeOperatingLeaseLeaseNotYetCommencedNumberOfLeases>
    <prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434405">
    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31, 2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 81%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted Average Remaining Lease Term (Years)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;4.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Weighted Average Discount Rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 16%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.6%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2019-12-31" id="c56003346">P4Y9M18D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2019-12-31"
      decimals="3"
      id="c56003347"
      unitRef="Pure">0.026</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56003330"
      unitRef="USD">5020000</us-gaap:OperatingLeasePayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003333"
      unitRef="USD">1921000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:DisclosureOfReclassificationAmountTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434406">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;15&lt;/em&gt; &#x2013; Accumulated Other Comprehensive Loss&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; respectively:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign currency translation adjustments&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(8,492&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,234&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(10,753&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;"&gt;Other comprehensive (loss) income before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,258&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,519&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;"&gt;Amounts reclassified from accumulated other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Net current-period other comprehensive (loss) income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(3,258&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,519&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Balance at end of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(7,018&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,492&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(5,234&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"/&gt;
  </us-gaap:DisclosureOfReclassificationAmountTextBlock>
    <us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434407">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign currency translation adjustments&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(8,492&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,234&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(10,753&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;"&gt;Other comprehensive (loss) income before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,258&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,519&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;"&gt;Amounts reclassified from accumulated other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Net current-period other comprehensive (loss) income&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(3,258&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,519&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;"&gt;Balance at end of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(7,018&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,492&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(5,234&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003358"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003359"
      unitRef="USD">-5234000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2016-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003360"
      unitRef="USD">-10753000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003361"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003362"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003363"
      unitRef="USD">5519000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003364"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003365"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003366"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003367"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003368"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2017-01-01_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003369"
      unitRef="USD">5519000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003370"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003371"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c56003372"
      unitRef="USD">-5234000</us-gaap:StockholdersEquity>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434408">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;16&lt;/em&gt; &#x2013; Income Taxes&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017,&lt;/em&gt; the Company recorded an income tax provision of $17.5&#160;million, $15.1 million and $22.7 million, respectively. The effective income tax rate for the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt; was 21.6&#160;percent, 16.4 percent and 30.4 percent, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The effective tax rate increased by 5.2% for the year ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31,&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt; when compared&#160;to &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; primarily due to a decrease in tax benefits from the vesting of restricted stock and exercise of stock options, an increase in the state tax provision, and an increase to valuation allowances for unrealizable deferred tax assets.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#160;was enacted on &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 22, 2017. &lt;/em&gt;The Act reduced the&#160;U.S. federal corporate tax rate from &lt;em style="font-weight: inherit; font-style: normal;"&gt;35%&lt;/em&gt; to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. &lt;em style="font-weight: inherit; font-style: normal;"&gt;No&lt;/em&gt; additional income taxes have been provided for any remaining undistributed foreign earnings &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 209px;"&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Domestic&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,841&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;81,893&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;69,929&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,762&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,506&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;81,193&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,655&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;74,435&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Significant components of the provision for income taxes for the following periods are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,991&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(782&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,808&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;State&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,882&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,078&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,367&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,544&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,810&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,215&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,121&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,325&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;865&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;State&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;269&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;538&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;193&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(809&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(430&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1,918&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Valuation Allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;528&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,127&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,538&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,067&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;22,657&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Federal tax statutory rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;State tax (net of federal benefit)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Share based compensation&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Valuation allowance against deferred tax assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Research and development credit&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign rate differential&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Tax reserves&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Domestic manufacturing deduction&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Miscellaneous&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Transition tax&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Revaluation of deferred tax liability&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(5.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21.6&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Significant components of deferred tax assets and liabilities are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred tax assets:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Accrued expenses&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,362&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;931&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,337&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Warrants and stock options&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,325&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,908&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,171&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;748&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;169&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Other assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,765&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;666&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net operating loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,513&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,605&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;"&gt;Less valuation allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,900&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total deferred tax assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,394&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,112&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred tax liabilities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Depreciation&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(26,750&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(21,788&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,590&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,486&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(3,337&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total deferred tax liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(35,677&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net deferred tax liability&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(26,283&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(20,162&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has recorded &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December&#160;&lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;31,&lt;/em&gt; &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019.&lt;/em&gt; Such amounts are intended to be reinvested outside of the United States indefinitely. It is &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $9.3&#160;million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;the Company had estimated net operating loss carry forwards of $6.5&#160;million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to &lt;span style="-sec-ix-hidden:c56003403"&gt;ten&lt;/span&gt; years. The remaining Japan net operating losses begin to expire at various dates between &lt;em style="font-weight: inherit; font-style: normal;"&gt;2020&lt;/em&gt;&#160;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2026.&lt;/em&gt; The Company&#x2019;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be carried forward without any time limitations but are limited to &lt;em style="font-weight: inherit; font-style: normal;"&gt;&#x20ac;1&lt;/em&gt; million, plus 60 percent&#160;of taxable income exceeding &lt;em style="font-weight: inherit; font-style: normal;"&gt;&#x20ac;1&lt;/em&gt; million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-&lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; that a portion of the deferred tax assets will &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; be realized. The Company's valuation allowances of $8.2&#160;million and $6.9 million at &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is &lt;em style="font-weight: inherit; font-style: normal;"&gt;no&lt;/em&gt; longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before &lt;em style="font-weight: inherit; font-style: normal;"&gt;2016.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has liabilities related to unrecognized tax benefits totaling $4.6&#160;million and $4.1 million at &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2018,&lt;/em&gt; respectively, that if recognized would result in a reduction of the Company&#x2019;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate. Interest and penalties were immaterial for each of the years ended &lt;em style="font-weight: inherit; font-style: normal;"&gt; December 31, 2019, &lt;/em&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt; and &lt;em style="font-weight: inherit; font-style: normal;"&gt;2017.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,233&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Additions for tax positions of current year&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;592&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;593&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Additions for tax positions of prior years&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;309&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Decrease related to expiration of statutes of limitations&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(90&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,039&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance at period end&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,598&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"/&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c56003378"
      unitRef="USD">17500000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c56003379"
      unitRef="USD">15100000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-5"
      id="c56003380"
      unitRef="USD">22700000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003385"
      unitRef="Pure">0.216</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003386"
      unitRef="Pure">0.164</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003387"
      unitRef="Pure">0.304</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003389"
      unitRef="Pure">0.052</prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2018-01-01_2018-12-31"
      decimals="2"
      id="c56003393"
      unitRef="Pure">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434409">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 209px;"&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Domestic&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,841&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;81,893&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;69,929&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,352&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,762&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,506&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 17px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;81,193&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,655&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;74,435&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003434"
      unitRef="USD">74841000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003435"
      unitRef="USD">81893000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003436"
      unitRef="USD">69929000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003437"
      unitRef="USD">6352000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003438"
      unitRef="USD">9762000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003439"
      unitRef="USD">4506000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003440"
      unitRef="USD">81193000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003441"
      unitRef="USD">91655000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003442"
      unitRef="USD">74435000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434410">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,991&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(782&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;17,808&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;State&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,882&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,078&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,367&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,544&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,810&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,215&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,121&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,325&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;865&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;State&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;269&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;538&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;193&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(809&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(430&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1,918&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Valuation Allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,540&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;528&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,127&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,538&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,067&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;22,657&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003450"
      unitRef="USD">6991000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003451"
      unitRef="USD">-782000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003452"
      unitRef="USD">17808000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003453"
      unitRef="USD">2882000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003454"
      unitRef="USD">2078000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003455"
      unitRef="USD">1367000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003456"
      unitRef="USD">1544000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c56003457"
      unitRef="USD">1810000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003458"
      unitRef="USD">2215000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003460"
      unitRef="USD">5121000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003461"
      unitRef="USD">11325000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003462"
      unitRef="USD">865000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003463"
      unitRef="USD">269000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003464"
      unitRef="USD">538000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003465"
      unitRef="USD">193000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003466"
      unitRef="USD">-809000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c56003467"
      unitRef="USD">-430000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003468"
      unitRef="USD">-1918000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56003469"
      unitRef="USD">1540000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003470"
      unitRef="USD">528000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003471"
      unitRef="USD">2127000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003472"
      unitRef="USD">17538000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003473"
      unitRef="USD">15067000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003474"
      unitRef="USD">22657000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434411">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Federal tax statutory rate&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;35.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;State tax (net of federal benefit)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.0&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Share based compensation&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Valuation allowance against deferred tax assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Research and development credit&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Foreign rate differential&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.3&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Tax reserves&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.9&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Domestic manufacturing deduction&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Miscellaneous&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Transition tax&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3.2&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Revaluation of deferred tax liability&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(0.5&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(5.7&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21.6&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30.4&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;%&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2019-01-01_2019-12-31"
      decimals="2"
      id="c56003481"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2018-01-01_2018-12-31"
      decimals="2"
      id="c56003482"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2017-01-01_2017-12-31"
      decimals="2"
      id="c56003483"
      unitRef="Pure">0.350</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003484"
      unitRef="Pure">0.021</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2018-01-01_2018-12-31"
      decimals="2"
      id="c56003485"
      unitRef="Pure">0.020</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003486"
      unitRef="Pure">0.017</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003487"
      unitRef="Pure">-0.005</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003488"
      unitRef="Pure">-0.028</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003489"
      unitRef="Pure">-0.008</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003490"
      unitRef="Pure">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003491"
      unitRef="Pure">0.007</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003492"
      unitRef="Pure">0.029</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003493"
      unitRef="Pure">0.028</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003494"
      unitRef="Pure">0.025</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003495"
      unitRef="Pure">0.022</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003496"
      unitRef="Pure">-0.003</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003497"
      unitRef="Pure">-0.001</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003498"
      unitRef="Pure">-0.019</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003499"
      unitRef="Pure">0.011</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003500"
      unitRef="Pure">-0.001</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003501"
      unitRef="Pure">0.009</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c56003502"
      unitRef="Pure">-0</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="0"
      id="c56003503"
      unitRef="Pure">-0</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities>
    <us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003504"
      unitRef="Pure">0.025</us-gaap:EffectiveIncomeTaxRateReconciliationDeductionsQualifiedProductionActivities>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003505"
      unitRef="Pure">-0.004</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003506"
      unitRef="Pure">-0.005</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003507"
      unitRef="Pure">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c56003508"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003509"
      unitRef="Pure">-0.008</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003510"
      unitRef="Pure">0.032</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c56003511"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003512"
      unitRef="Pure">-0.005</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003513"
      unitRef="Pure">-0.057</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c56003514"
      unitRef="Pure">0.216</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c56003515"
      unitRef="Pure">0.164</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2017-01-01_2017-12-31"
      decimals="3"
      id="c56003516"
      unitRef="Pure">0.304</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434412">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
       &lt;td&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred tax assets:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Accrued expenses&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,362&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;931&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,337&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Warrants and stock options&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,325&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,908&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,171&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;748&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;169&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Other assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,765&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;666&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net operating loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,513&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,605&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;"&gt;Less valuation allowance&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,248&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,900&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total deferred tax assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,394&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,112&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Deferred tax liabilities:&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Depreciation&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(26,750&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(21,788&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,590&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,486&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(3,337&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total deferred tax liabilities&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(35,677&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25,274&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net deferred tax liability&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(26,283&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(20,162&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003522"
      unitRef="USD">1362000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003523"
      unitRef="USD">931000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <prlb:DeferredTaxAssetsRightOfUseLeases
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003524"
      unitRef="USD">3337000</prlb:DeferredTaxAssetsRightOfUseLeases>
    <prlb:DeferredTaxAssetsRightOfUseLeases
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003525"
      unitRef="USD">0</prlb:DeferredTaxAssetsRightOfUseLeases>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003526"
      unitRef="USD">3325000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003527"
      unitRef="USD">2908000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003528"
      unitRef="USD">1171000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003529"
      unitRef="USD">748000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003530"
      unitRef="USD">169000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003531"
      unitRef="USD">154000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003532"
      unitRef="USD">1765000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003533"
      unitRef="USD">666000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003534"
      unitRef="USD">6513000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003535"
      unitRef="USD">6605000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003536"
      unitRef="USD">8248000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2018-12-31"
      decimals="-5"
      id="c56003537"
      unitRef="USD">6900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003538"
      unitRef="USD">9394000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003539"
      unitRef="USD">5112000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56003541"
      unitRef="USD">26750000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003542"
      unitRef="USD">21788000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c56003543"
      unitRef="USD">5590000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003544"
      unitRef="USD">3486000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003545"
      unitRef="USD">3337000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003546"
      unitRef="USD">-0</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003547"
      unitRef="USD">35677000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003548"
      unitRef="USD">25274000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003549"
      unitRef="USD">26283000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003550"
      unitRef="USD">20162000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:UndistributedEarningsOfForeignSubsidiaries
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56003401"
      unitRef="USD">9300000</us-gaap:UndistributedEarningsOfForeignSubsidiaries>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56003402"
      unitRef="USD">6500000</us-gaap:OperatingLossCarryforwards>
    <prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome
      contextRef="d_2019-01-01_2019-12-31"
      decimals="1"
      id="c56003407"
      unitRef="Pure">0.60</prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56003412"
      unitRef="USD">8200000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2018-12-31"
      decimals="-5"
      id="c56003413"
      unitRef="USD">6900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c56003418"
      unitRef="USD">4600000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2018-12-31"
      decimals="-5"
      id="c56003419"
      unitRef="USD">4100000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434413">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 66%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,233&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Additions for tax positions of current year&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;592&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;593&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Additions for tax positions of prior years&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;309&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Decrease related to expiration of statutes of limitations&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(90&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,039&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance at period end&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,598&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003555"
      unitRef="USD">4096000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c56003556"
      unitRef="USD">4233000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003557"
      unitRef="USD">592000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003558"
      unitRef="USD">593000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003559"
      unitRef="USD">0</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003560"
      unitRef="USD">309000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56003561"
      unitRef="USD">90000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003562"
      unitRef="USD">1039000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003563"
      unitRef="USD">4598000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003564"
      unitRef="USD">4096000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:LegalMattersAndContingenciesTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434414">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;17&lt;/em&gt; &#x2013; Litigation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;From time to time, the Company &lt;em style="font-weight: inherit; font-style: normal;"&gt; may &lt;/em&gt;be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#160;Although the results of litigation and claims cannot be predicted with certainty, the Company does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;
  </us-gaap:LegalMattersAndContingenciesTextBlock>
    <us-gaap:SegmentReportingDisclosureTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434415">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;18&lt;/em&gt; &#x2013; Segment Reporting&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#x2019;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#160;that the Company does &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; allocate directly to its operating segments.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue in the United States is derived from Injection Molding, CNC Machining, &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing product lines. Revenue in&#160;Japan is derived from Injection Molding and CNC Machining product lines. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined and lathe-turned customer parts. &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt; Printing revenue consists of sales of &lt;em style="font-weight: inherit; font-style: normal;"&gt;3D&lt;/em&gt;-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The accounting policies of the reportable segments are the same as those described in&#160;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;2&lt;/em&gt;&#160;&#x2013;&#160;Summary of Significant Accounting Policies. Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are &lt;em style="font-weight: inherit; font-style: normal;"&gt;not&lt;/em&gt; allocated to business segments.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Beginning in &lt;em style="font-weight: inherit; font-style: normal;"&gt;2019,&lt;/em&gt; the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue and income from operations by reportable segment are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;263,086&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70,154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Income from Operations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,594&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,710&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99,561&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;15,077&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,747&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;12,796&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Corporate Unallocated and Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,815&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,557&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(40,131&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total income from operations&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;79,856&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;88,898&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;72,226&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,171&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;125,308&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,019&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,577&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;33,691&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,522&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,445&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,441&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total long-lived assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;166,440&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Expenditures for additions to long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,123&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;78,762&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;20,370&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,743&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,576&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,704&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;766&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;561&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total expenditures for additions to long-lived assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;62,230&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;87,104&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;32,635&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Depreciation and Amortization:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,767&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,267&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,746&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,679&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,174&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,351&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;958&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,033&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total depreciation and amortization&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,864&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,754&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;18,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      id="c1434416">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;263,086&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;70,154&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,250&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;344,490&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003585"
      unitRef="USD">360205000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003586"
      unitRef="USD">350535000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003587"
      unitRef="USD">263086000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003588"
      unitRef="USD">82805000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003589"
      unitRef="USD">80889000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003590"
      unitRef="USD">70154000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c56003591"
      unitRef="USD">15718000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c56003592"
      unitRef="USD">14172000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-4"
      id="c56003593"
      unitRef="USD">11250000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c56003594"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c56003595"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-4"
      id="c56003596"
      unitRef="USD">344490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <prlb:IncomeFromOperationsByGeographicAreaTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434417">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Income from Operations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,594&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,710&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99,561&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;15,077&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,747&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;12,796&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Corporate Unallocated and Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,815&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,557&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(40,131&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total income from operations&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;79,856&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;88,898&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;72,226&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:IncomeFromOperationsByGeographicAreaTableTextBlock>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003604"
      unitRef="USD">108594000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-4"
      id="c56003605"
      unitRef="USD">115710000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003606"
      unitRef="USD">99561000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003607"
      unitRef="USD">15077000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003608"
      unitRef="USD">16747000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003609"
      unitRef="USD">12796000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c56003610"
      unitRef="USD">-43815000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c56003611"
      unitRef="USD">-43557000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2017-01-01_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c56003612"
      unitRef="USD">-40131000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003613"
      unitRef="USD">79856000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003614"
      unitRef="USD">88898000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003615"
      unitRef="USD">72226000</us-gaap:OperatingIncomeLoss>
    <us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434418">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,171&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,979&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;125,308&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,019&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,577&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;33,691&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,522&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,445&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,441&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total long-lived assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;166,440&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003623"
      unitRef="USD">210171000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003624"
      unitRef="USD">185979000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c56003625"
      unitRef="USD">125308000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003626"
      unitRef="USD">45019000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003627"
      unitRef="USD">34577000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c56003628"
      unitRef="USD">33691000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c56003629"
      unitRef="USD">8522000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c56003630"
      unitRef="USD">7445000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2017-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c56003631"
      unitRef="USD">7441000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c56003632"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c56003633"
      unitRef="USD">228001000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2017-12-31"
      decimals="-4"
      id="c56003634"
      unitRef="USD">166440000</us-gaap:PropertyPlantAndEquipmentNet>
    <prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434419">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Expenditures for additions to long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,123&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;78,762&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;20,370&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,743&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,576&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,704&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;766&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;561&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total expenditures for additions to long-lived assets&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;62,230&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;87,104&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;32,635&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56003642"
      unitRef="USD">45123000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56003643"
      unitRef="USD">78762000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US"
      decimals="-4"
      id="c56003644"
      unitRef="USD">20370000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003645"
      unitRef="USD">14743000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003646"
      unitRef="USD">7576000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003647"
      unitRef="USD">11704000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003648"
      unitRef="USD">2364000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003649"
      unitRef="USD">766000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003650"
      unitRef="USD">561000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c56003651"
      unitRef="USD">62230000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003652"
      unitRef="USD">87104000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003653"
      unitRef="USD">32635000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434420">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2019&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2018&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;2017&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Depreciation and Amortization:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,767&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,267&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Europe&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,746&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,679&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,174&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Japan&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,351&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;958&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,033&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total depreciation and amortization&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,864&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,754&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;18,474&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;
     &lt;/tbody&gt;
    &lt;/table&gt;
   </prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56003661"
      unitRef="USD">24767000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56003662"
      unitRef="USD">21117000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c56003663"
      unitRef="USD">13267000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003664"
      unitRef="USD">4746000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003665"
      unitRef="USD">4679000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c56003666"
      unitRef="USD">4174000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003667"
      unitRef="USD">1351000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003668"
      unitRef="USD">958000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2017-01-01_2017-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c56003669"
      unitRef="USD">1033000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c56003670"
      unitRef="USD">30864000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c56003671"
      unitRef="USD">26754000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2017-01-01_2017-12-31"
      decimals="-3"
      id="c56003672"
      unitRef="USD">18474000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:SubsequentEventsTextBlock contextRef="d_2019-01-01_2019-12-31" id="c1434421">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font-weight: inherit; font-style: normal;"&gt;19&lt;/em&gt; &#x2013; Subsequent Events&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&lt;em style="font-weight: inherit; font-style: normal;"&gt;None.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"/&gt;
  </us-gaap:SubsequentEventsTextBlock>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>103
<FILENAME>R83.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6817292320">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Segment Reporting - Depreciation and Amortization (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">$ 30,864<span></span>
</td>
<td class="nump">$ 26,754<span></span>
</td>
<td class="nump">$ 18,474<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">24,767<span></span>
</td>
<td class="nump">21,117<span></span>
</td>
<td class="nump">13,267<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">4,746<span></span>
</td>
<td class="nump">4,679<span></span>
</td>
<td class="nump">4,174<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_JP', window );">JAPAN</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">$ 1,351<span></span>
</td>
<td class="nump">$ 958<span></span>
</td>
<td class="nump">$ 1,033<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DepreciationDepletionAndAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DepreciationDepletionAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_JP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>104
<FILENAME>R73.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6671857824">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Income Taxes (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income Tax Expense (Benefit), Total</a></td>
<td class="nump">$ 17,538<span></span>
</td>
<td class="nump">$ 15,067<span></span>
</td>
<td class="nump">$ 22,657<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Effective Income Tax Rate Reconciliation, Percent, Total</a></td>
<td class="nump">21.60%<span></span>
</td>
<td class="nump">16.40%<span></span>
</td>
<td class="nump">30.40%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod', window );">Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period</a></td>
<td class="nump">5.20%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">35.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UndistributedEarningsOfForeignSubsidiaries', window );">Undistributed Earnings of Foreign Subsidiaries</a></td>
<td class="nump">$ 9,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLossCarryforwards', window );">Operating Loss Carryforwards, Total</a></td>
<td class="nump">$ 6,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_OperatingLossCarryforwardsExpirationPeriod', window );">Operating Loss Carryforwards, Expiration Period</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome', window );">Operating Loss Carryforwards, Percentage of Taxable Income</a></td>
<td class="nump">60.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Deferred Tax Assets, Valuation Allowance, Total</a></td>
<td class="nump">$ 8,248<span></span>
</td>
<td class="nump">$ 6,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Unrecognized Tax Benefits, Ending Balance</a></td>
<td class="nump">$ 4,598<span></span>
</td>
<td class="nump">$ 4,096<span></span>
</td>
<td class="nump">$ 4,233<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_OperatingLossCarryforwardsExpirationPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The expiration period of operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_OperatingLossCarryforwardsExpirationPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the operating loss carryforwards percentage of taxable income limit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32698-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=115929826&amp;loc=d3e8736-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=26873400&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109238882&amp;loc=d3e38679-109324<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32559-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UndistributedEarningsOfForeignSubsidiaries">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 740<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6487024&amp;loc=d3e29054-158556<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)(c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 25<br> -Paragraph 3<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=117330534&amp;loc=d3e28200-109314<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 740<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6479915&amp;loc=d3e66715-112838<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UndistributedEarningsOfForeignSubsidiaries</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI http://asc.fasb.org/extlink&amp;oid=116821951&amp;loc=SL37586934-109318<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>105
<FILENAME>R58.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6817365568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Employee Benefit Plans (Details Textual) - 401(k) Retirement Plan [Member]<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2018 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2017 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan', window );">Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan</a></td>
<td class="nump">20<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan', window );">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan</a></td>
<td class="text">3 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent', window );">Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent</a></td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount', window );">Defined Contribution Plan, Employer Discretionary Contribution Amount</a></td>
<td class="nump">$ 3.1<span></span>
</td>
<td class="nump">$ 2.7<span></span>
</td>
<td class="nump">$ 1.9<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember', window );">Foreign Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount', window );">Defined Contribution Plan, Employer Discretionary Contribution Amount</a></td>
<td class="nump">$ 0.3<span></span>
</td>
<td class="nump">$ 0.3<span></span>
</td>
<td class="nump">$ 0.3<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) Plan</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of discretionary contributions made by an employer to a defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanSponsorLocationAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanSponsorLocationAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanSponsorLocationAxis=us-gaap_ForeignPlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanSponsorLocationAxis=us-gaap_ForeignPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>106
<FILENAME>R50.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664748688">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 6 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths', window );">2020</a></td>
<td class="nump">$ 3,016<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo', window );">2021</a></td>
<td class="nump">3,016<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree', window );">2022</a></td>
<td class="nump">3,016<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour', window );">2023</a></td>
<td class="nump">2,813<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive', window );">2024</a></td>
<td class="nump">1,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive', window );">Thereafter</a></td>
<td class="nump">4,108<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Total estimated amortization expense</a></td>
<td class="nump">$ 17,369<span></span>
</td>
<td class="nump">$ 19,850<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized after the fifth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the next fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fifth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fourth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the third fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the second fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>107
<FILENAME>R54.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.19.3.a.u2</span><table class="report" border="0" cellspacing="2" id="idp6664831264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Property and Equipment (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Depreciation', window );">Depreciation, Total</a></td>
<td class="nump">$ 27.4<span></span>
</td>
<td class="nump">$ 23.5<span></span>
</td>
<td class="nump">$ 18.0<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Depreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118932676&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Depreciation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table></div>
</body>
</html>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
